pycharm 如何通过聊天机器人将不和谐类别添加到服务器?

ycl3bljg  于 2023-01-20  发布在  PyCharm
关注(0)|答案(1)|浏览(113)

为了快速设置服务器,我尝试用Python构建一个discord bot,它接受命令“!Create {Category name here}”,然后从存储在变量“textChannelNames”中的字符串列表生成一个包含文本通道的类别。

def run_discord_bot():
    TOKEN = "my discord token"
    intents = discord.Intents.default()
    intents.message_content = True
    client = discord.Client(intents=intents)

    @commands.command("!Create")
    async def addcategory(ctx):
        try:
            await ctx.guild.create_category(categoryName)
            await ctx.send(f"A new category called '{categoryName}' was made")
            #Call addTextChannel for every element in the textChannelNames list
            for textChannel in textChannelNames:
                addTextChannel(ctx, textChannel)
        except Exception as e:
            print(e)

    async def addTextChannel(ctx, channel_name):
        try:
            guild = ctx.guild

            # message that the bot sends
            mbed = discord.Embed(
                title="Success",
                description=f"{channel_name} has successfully been created"
            )
            if ctx.author.guild_permissions.manage_channels:
                await guild.create_text_channel(name='{}'.format(channel_name))
                await  ctx.send(embed=mbed)
        except Exception as e:
            print(e)
    client.run(TOKEN)

我发现在调试模式下addcategory没有运行,但我不知道为什么。类别和文本通道都没有创建。

owfi6suc

owfi6suc1#

您使用的是Client而不是BotBot不支持命令,因此,您的命令完全被discord.py忽略,因为Client不知道(或不关心)它们的存在。
如果您需要命令,请使用Commands框架。https://discordpy.readthedocs.io/en/stable/ext/commands/index.html

  • 此外,您的命令在name中有前缀,因此即使您使用Bot,它也永远不会匹配。该前缀应传递给Bot__init__。*

最后,你没有使用await函数,所以这对你也没有多大帮助。

相关问题