プログラムの一部をクラスにまとめたい

前提

Pythonでpycordというライブラリを使い、discordのbotを作っています。

実現したいこと

ボタン1つをクラスにして、ボタンが必要な分だけ呼び出して使いまわせるようにしたい

該当のソースコード

py

class gameView1(discord.ui.View): def __init__(self): super().__init__(timeout=None) @discord.ui.button(label="a", custom_id='a', style=discord.ButtonStyle.blurple) async def button1(self, button: discord.ui.Button, interaction: discord.Interaction): role_id = ロールのid guild = bot.get_guild(server_id) role = discord.utils.get(guild.roles, id=role_id) member = guild.get_member(interaction.user.id) if role_id in [i.id for i in member.roles]: await member.remove_roles(role) await interaction.response.send_message('通知を**オフ**にしました。', ephemeral=True) else: await member.add_roles(role) await interaction.response.send_message('通知を**オン**にしました。', ephemeral=True) @discord.ui.button(label="b", custom_id='b', style=discord.ButtonStyle.blurple) async def button2(self, button: discord.ui.Button, interaction: discord.Interaction): role_id = ロールのid guild = bot.get_guild(server_id) role = discord.utils.get(guild.roles, id=role_id) member = guild.get_member(interaction.user.id) if role_id in [i.id for i in member.roles]: await member.remove_roles(role) await interaction.response.send_message('通知を**オフ**にしました。', ephemeral=True) else: await member.add_roles(role) await interaction.response.send_message('通知を**オン**にしました。', ephemeral=True)

試したこと

こんな感じで試してみたのですが、反応されず、ボタンが生成されませんでした。

py

class role_button(discord.ui.View): def __init__(self): super().__init__(timeout=None) def discord_button(name, role_id): @discord.ui.button(label=name, custom_id=name, style=discord.ButtonStyle.blurple) async def button1(self, button: discord.ui.Button, interaction: discord.Interaction): guild = bot.get_guild(server_id) role = discord.utils.get(guild.roles, id=role_id) member = guild.get_member(interaction.user.id) if role_id in [i.id for i in member.roles]: await member.remove_roles(role) await interaction.response.send_message('通知を**オフ**にしました。', ephemeral=True) else: await member.add_roles(role) await interaction.response.send_message('通知を**オン**にしました。', ephemeral=True) # Viewクラスを継承してButtonを持ったViewを作成します。class gameView1(role_button, discord.ui.View): btn=role_button discord_button1 = btn.discord_button discord_button1("a", ロールのid) discord_button2 = btn.discord_button discord_button2("b", ロールのid)

コメントを投稿

0 コメント