【问题标题】:What is causing the ticket system to not function?是什么导致票务系统无法运行?
【发布时间】:2021-10-08 21:38:37
【问题描述】:

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

    @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

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

【问题讨论】:

  • 您是否使用过print 语句来查看机器人卡在哪里?
  • @Dominik 使用它们,只是根本没有运行。
  • if user.channel.id 应该做什么?我从来没有见过这样的事情。 if reaction.channel.id 更有意义。
  • 这是我在其他帖子中找到的东西并列在一起
  • 你在哪里定义guild

标签: python discord discord.py bots ticket-system


【解决方案1】:

我注意到的一些事情:

  • 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

【讨论】:

  • 太好了,我下次工作的时候看看。 Randomint 之前是通过导入一些东西来定义的,但我更喜欢你的方式
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-28
  • 1970-01-01
相关资源
最近更新 更多