是什么导致工单系统无法运行?

What is causing the ticket system to not function?

抱歉,这可能很容易解决(我不太了解文档) 但是,我想要打开一个频道,所以只有用户和模组才能看到它。当用户对消息添加反应时,它将被打开,然后反应将被删除(只留下机器人的反应) 目前,我的代码是:

    @commands.Cog.listener()
    async def on_reaction_add(self, reaction, user):
        if reaction.emoji == '':
            if user.channel.id == 850622999577231370:
                await message.remove_reaction("", user)
                overwrites = {
                    guild.default_role: discord.PermissionOverwrite(read_messages=False),
                    guild.me: discord.PermissionOverwrite(read_messages=True)
                }
                n = random.randomint(1, 1000)
                await guild.create_text_channel(f'Ticket {n}', overwrites=overwrites, categoty="Tickets")
            else:
                pass
        else:
            pass

似乎没有运行,因为没有错误消息,但也没有创建频道

我注意到的几件事:

  • random.randomint不存在,一定是random.randrange.
  • 您没有在提供的代码中定义 guild,我们将只使用 user.guild
  • 为了获取频道,我们使用 if reaction.message.channel.id 而不是 if user.channel.id,这在这里毫无意义。

这是一个可能的新代码:

@commands.Cog.listener()
async def on_reaction_add(self, reaction, user):
    if reaction.emoji == '':
        print("Reaction")
        if reaction.message.channel.id == Your_Channel_ID:
            await reaction.message.remove_reaction("", user)
            guild = user.guild # We get the guild
            overwrites = {
                guild.default_role: discord.PermissionOverwrite(read_messages=False),
                guild.me: discord.PermissionOverwrite(read_messages=True)
            }
            n = random.randrange(1, 1000) # We choose a number from randrange 1-1000
            await guild.create_text_channel(f'Ticket {n}', overwrites=overwrites, categoty="Tickets")
        else:
            pass
    else:
        pass