首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pycord选择期权观坚持

Pycord选择期权观坚持
EN

Stack Overflow用户
提问于 2022-05-21 21:14:09
回答 1查看 658关注 0票数 0

我正在尝试创建一个带有选项选择菜单的事件名册机器人(包含注册、删除和删除)。

即使在机器人重新启动之后,我如何才能使它持久呢?

视图上的超时等于零。我也尝试过在bot.add_view()中使用on_ready,但这也不起作用。

下面是创建新名册的命令

代码语言:javascript
复制
@bot.slash_command(name = 'roseter-activity', description = 'create a roster for a dungeon, trial, or arena')
@discord.option("activity_name", description="Choose your activity", autocomplete=get_activity)
@discord.option('level', description='Choose the level of the activity', choices = ['Normal', 'Veteran'])
async def activityRoster(ctx, activity_name, level, date, time, timezone, tank_count = 0, healer_count = 0, dps_count = 0):
    category = ctx.channel.category

    if level == 'Veteran':
        level_name = 'Veteran '
        level_abr = 'v'
    else:
        level_name = 'Normal '
        level_abr = 'n'

    eType, abr, activity_name = getType(activity_name)

    channel = await ctx.guild.create_text_channel(name = level_abr + abr + ' ' + date.replace('/','-'), category = category)

    seats = 0
    if eType == 'Trial':
        if tank_count == 0:
            tankNum = 2
        else:
            tankNum = tank_count
        if healer_count == 0:
            healerNum = 2
        else:
            healerNum = healer_count
        if dps_count == 0:
            dpsNum = 8
        else:
            dpsNum = dps_count
    elif eType == 'Dungeon':
        if tank_count == 0:
            tankNum = 1
        else:
            tanknum = tank_count
        if healer_count == 0:
            healerNum = 1
        else:
            healerNum = healer_count
        if dps_count == 0:
            dpsNum = 2
        else:
            dpsNum = dps_count
    else:
        tankNum = 0
        healerNum = 0
        dpsNum = 0
        seats = 4

    if eType == 'Arena':
        message = await channel.send(view = eventView(timeout=None), embed = createEmbed(ctx.author, eType, (level_name + activity_name), date, time, timezone, tankNum=tankNum, healerNum=healerNum, dpsNum=dpsNum, seats=seats))
    else:
        message = await channel.send(view = activityView(timeout=None), embed = createEmbed(ctx.author, eType, (level_name + activity_name), date, time, timezone, tankNum=tankNum, healerNum=healerNum, dpsNum=dpsNum, seats=seats))
    #await addReactions(message, seats)
    #await ctx.respond('created roster in ' + channel.mention, ephemeral = True)
    return channel

下面是activiteView类

代码语言:javascript
复制
class activityView(View):

@discord.ui.select( placeholder = 'Select Option',
                    custom_id = 'activitySelect',
                    options =   [
                                    discord.SelectOption(label = 'Register Tank', emoji = tank),
                                    discord.SelectOption(label = 'Register Healer', emoji = heal),
                                    discord.SelectOption(label = 'Register DPS', emoji = damage),
                                    discord.SelectOption(label = 'Remove', emoji = remove),
                                    discord.SelectOption(label = 'Delete Roster', emoji = delete)
                                ]
                  )
async def select_callback(self, select, interaction):
    option = select.values[0]
    user = interaction.user
    message = interaction.message
    embed = message.embeds[0]

    if option == 'Remove':
        await interaction.response.edit_message(embed = removeUser(user, embed))
    elif option == 'Register Tank':
        await interaction.response.edit_message(embed = addTank(user, embed))
    elif option == 'Register Healer':
        await interaction.response.edit_message(embed = addHealer(user, embed))
    elif option == 'Register DPS':
        await interaction.response.edit_message(embed = addDPS(user, embed))
    elif option == 'Delete Roster':
        if str(user) in embed.fields[0].name:
            await interaction.channel.delete()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-07 15:32:05

添加

代码语言:javascript
复制
bot.add_view(activityView())

你的on_ready应该能解决你的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72333253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档