前提・実現したいこと
discordでこのような、ボタンを指定したチャンネルに表示したいです。
発生している問題
ボタンを指定したdiscordのチャンネルに表示したいです。
以下のコードはコマンドを打ったチャンネルに表示してしまいます。
python
1buttons = ButtonsClient(bot) 2@bot.command() 3async def ready(ctx): 4 await buttons.send( 5 content="test", 6 channel=ctx.channel.id, 7 components = [ 8 ActionRow([ 9 Button( 10 label="test", 11 style=ButtonType().Primary, 12 custom_id="join1" 13 ) 14 ]) 15 ] 16 )
試したこと
python
1channel=ctx.guild.get_channel(id)
としましたが
Ignoring exception in command ready: Traceback (most recent call last): File "C:\Users\waon-pc\AppData\Local\Programs\Python\Python37-32\lib\site-packages\discord\ext\commands\core.py", line 85, in wrapped ret = await coro(*args, **kwargs) File "f:\data\data\test\pythonfill\buttonstest.py", line 88, in ready custom_id="join1" File "C:\Users\waon-pc\AppData\Local\Programs\Python\Python37-32\lib\site-packages\discord_buttons_plugin\__main__.py", line 61, in send "components": retcomp File "C:\Users\waon-pc\AppData\Local\Programs\Python\Python37-32\lib\site-packages\discord\http.py", line 254, in request raise HTTPException(r, data) discord.errors.HTTPException: 400 Bad Request (error code: 50035): Invalid Form Body In channel_id: Value "join1" is not snowflake. The above exception was the direct cause of the following exception: Traceback (most recent call last): File "C:\Users\waon-pc\AppData\Local\Programs\Python\Python37-32\lib\site-packages\discord\ext\commands\bot.py", line 939, in invoke await ctx.command.invoke(ctx) File "C:\Users\waon-pc\AppData\Local\Programs\Python\Python37-32\lib\site-packages\discord\ext\commands\core.py", line 863, in await injected(*ctx.args, **ctx.kwargs) File "C:\Users\waon-pc\AppData\Local\Programs\Python\Python37-32\lib\site-packages\discord\ext\commands\core.py", line 94, in raise CommandInvokeError(exc) from exc discord.ext.commands.errors.CommandInvokeError: Command raised an exception: HTTPException: 400 Bad Request (error code: 50035): Invalid Form Body In channel_id: Value "join1" is not snowflake.
となってしまいました。
解決方法
ベストアンサーをご覧ください。
> channel=ctx.guild.get_channel(id)
id変数には何が入っているんですか?
あと、なぜこれを試したんですか?
IdにはチャンネルIdを入れています
ctx.channel.idでチャンネルIdを取得していると思ったためです。
> IdにはチャンネルIdを入れています
id変数の内容が誤っている可能性を考えましたが、違うかも知れませんね。
これだけでは判断しかねるので、出力されたTracebackをすべてコピーペーストしてください。
> ctx.channel.idでチャンネルIdを取得していると思ったためです。
channel=ctx.channel ではだめなのですか?
また、buttons という変数がなにかわかりません。どこで定義されていますか。
omponents は components の誤字のように見えます。
いろいろご指摘ありがとうございます。
1つめは追記しておきました。
2つめなのですが、コマンドを打ったチャンネルに表示されると思います。また、「.id」をつけないと
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: send() got an unexpected keyword argument 'channel'
のようにエラーが出てしまします。
3つめはbuttons = ButtonsClient(bot)
と、入力時のミスでした。すみません
回答1件
あなたの回答
tips
プレビュー