質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

解決済

discord py 2.0 の button でインタラクションエラーが発生する。

lawliet
lawliet

総合スコア10

Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

1回答

0評価

0クリップ

318閲覧

投稿2022/06/19 10:51

discord py 2.0 でボタン処理を実装しようとしています。

Pythonバージョン:Python 3.10.4
使用モジュール:discord.py @ git+https://github.com/Rapptz/discord.py@9648986028a9721e1ba733750eb8c30e163dcb2c

こちらのチュートリアルを参考に以下のコードを記載しました。
https://gist.github.com/lykn/bac99b06d45ff8eed34c2220d86b6bf4

Python

# Note: This is just an "improved" code of what's shown above and that's how it's going to work throughout the gist the above code is going to be refined over and over again. import discord from discord.ext import commands intents = discord.Intents.all() client = commands.Bot(command_prefix=".", intents=intents) class Buttons(discord.ui.View): def __init__(self, *, timeout=180): super().__init__(timeout=timeout) @discord.ui.button(label="Button", style=discord.ButtonStyle.gray) async def blurple_button(self, button: discord.ui.Button, interaction: discord.Interaction): button.style = discord.ButtonStyle.green await interaction.response.edit_message(content=f"This is an edited button response!", view=self) @client.command() async def button(ctx): await ctx.send("This message has buttons!", view=Buttons()) token = "TOKEN" client.run(token)

.button コマンドを使用すると、ボタン が表示されますが、押してもインタラクションエラーとなっていまいます。

エラーは以下のとおりです。

Error

Ignoring exception in view <Buttons timeout=180 children=1> for item <Button style=<ButtonStyle.secondary: 2> url=None disabled=False label='Button' emoji=None row=None>: Traceback (most recent call last): File "C:\Users\KOMATSU\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\ui\view.py", line 414, in _scheduled_task await item.callback(interaction) File "c:\Users\KOMATSU\practice\test.py", line 15, in blurple_button button.style = discord.ButtonStyle.green AttributeError: 'Interaction' object has no attribute 'style'

await interaction.response.edit_message(content=f"This is an edited button response!", view=self)
を、await interaction.response.send_message("ボタンがクリックされました", ephemeral=True) に変更しても同様のErrorがでます。

やりたいこと
正常にインタラクションに対してレスポンスを行いたい。

初質問のため、至らないところが多いかと思いますが、よろしくお願いします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。