我需要创建一个功能来创建自定义临时语音通道和文本通道,用户可以在其中设置他的私人房间。
@client.event
async def on_ready():
print('bot online')
await private_rooms_menu()
#...
async def private_rooms_menu():
private_rooms_menu_embed = discord.Embed(title="Private room menu")
edit_private_rooms_channel = client.get_channel(EDIT_PRIVATE_ROOMS_ID)
await edit_private_rooms_channel.purge(limit=None)
menu_buttons = discord.ui.View()
btn_change_private_room_name = discord.ui.Button(label='Change name', style=discord.ButtonStyle.primary)
btn_private_room_open = discord.ui.Button(label='Open', style=discord.ButtonStyle.grey)
btn_private_room_lock = discord.ui.Button(label='Lock', style=discord.ButtonStyle.grey)
btn_private_room_give_access = discord.ui.Button(label='Give access', style=discord.ButtonStyle.green)
btn_private_room_kick = discord.ui.Button(label='Kick', style=discord.ButtonStyle.red)
menu_buttons.add_item(item=btn_change_private_room_name)
menu_buttons.add_item(item=btn_private_room_open)
menu_buttons.add_item(item=btn_private_room_lock)
menu_buttons.add_item(item=btn_private_room_kick)
menu_buttons.add_item(item=btn_private_room_give_access)
async def btn_change_private_room_callback(ctx):
changed_private_room_name = ''
private_name_modal = discord.ui.Modal(title="Private room changing:")
name_modal = discord.ui.TextInput(label="Enter new channel name:",
placeholder='*something interesting*',
required=True,
max_length=MAX_PRIVATE_ROOM_NAME_LENGTH)
private_name_modal.add_item(name_modal)
async def on_submit(changed_name: str):
changed_name = name_modal
await on_submit(changed_private_room_name)
print(changed_private_room_name)
async def btn_private_room_open_callback(ctx):
return
async def btn_private_room_lock_callback(ctx):
return
async def btn_private_room_give_access_callback(ctx):
return
async def btn_private_room_kick_callback(ctx):
return
btn_change_private_room_name.callback = btn_change_private_room_callback
btn_private_room_open.callback = btn_private_room_open_callback
btn_private_room_lock.callback = btn_private_room_lock_callback
btn_private_room_give_access.callback = btn_private_room_give_access_callback
btn_private_room_kick.callback = btn_private_room_kick_callback
await edit_private_rooms_channel.send(embed=private_rooms_menu_embed, view=menu_buttons, silent=True)
这个菜单应该对每个在他的私人房间里的人来说都是可交互的。 问题在于
async def btn_change_private_room_callback(ctx):
不起作用。 pycharm中没有错误,只是在discord聊天中显示“此交互失败” 我试图完全删除该函数中的所有内容,只留下 print(),但出现了同样的问题
另外,我觉得modal有几个错误,我只是不知道怎么写
async def btn_change_private_room_callback(ctx):
changed_private_room_name = ''
private_name_modal = discord.ui.Modal(title="Private room changing:")
name_modal = discord.ui.TextInput(label="Enter new channel name:",
placeholder='*something interesting*',
required=True,
max_length=MAX_PRIVATE_ROOM_NAME_LENGTH)
private_name_modal.add_item(name_modal)
await ctx.response.send_modal(private_name_modal)
顺便说一句,使用交互,ctx 在这种情况下很混乱