Discord.pyを使用しボタンを押した人にロールを付与したい。

実現したいこと

Discord.pyを使用しボタンを押した人にロールを付与したい。

前提

Discord.pyとVScodeで開発してます。
python 3.12.2
Discord.py 2.3.2

発生している問題・エラーメッセージ

ボットは正常に起動しますしコマンドでボタン付きのチャットが送信されますが ユーザーがボタンを押したときに「インタラクションに失敗しました」とDiscord上に表示され正常にロール付与されません。

該当のソースコード

import discord from discord.ext import commands # Discord Botのトークン bot = commands.Bot(command_prefix="!", intents=discord.Intents.all()) TOKEN = "***" # Botが起動したときの処理 @bot.event async def on_ready(): print(f'{bot.user} が準備完了しました') # ボタンを含むEmbedを表示するコマンド @bot.command() async def member(ctx): embed = discord.Embed( color=discord.Color.blue() ) embed=discord.Embed(title="認証", color=0x0f83ff) embed.add_field(name="認証", value= "常識がありルールを守れる方のみボタンを押しロールを取得してください。", inline=False) view = discord.ui.View() view.add_item(discord.ui.Button(label="認証", style=discord.ButtonStyle.primary, custom_id="ok")) # 送信 await ctx.send(embed=embed, view=view) # ボタンがクリックされたときの処理 @bot.event async def on_button_click(interaction): if interaction.custom_id == "ok": member = interaction.user role_id = "***" role = discord.utils.get(interaction.guild.roles, id=role_id) if role: await member.add_roles(role) # Botを起動 bot.run(TOKEN)

試したこと

ロールのIDの確認→問題なし
Botの権限→問題なし

コメントを投稿

0 コメント