首页 > 解决方案 > Discord bot 不会运行启动序列

问题描述

我正在制作一个不和谐机器人,它不会运行我制作的序列,当它加入服务器时,它应该在该类别中创建一个角色、一个类别和两个频道。

async def on_server_join(ctx):
  await ctx.guild.create_category('Friend')
  await ctx.guild.create_role(name="friend.admin", mentionable=True)
  category = ctx.guild.utils.get(ctx.guild.categories, name='Friend')
  await ctx.guild.create_text_channel('Chat-with-@Friend', category=category)
  guild = ctx.guild
  admin_role = ctx.guild.roles, name="Admin"
  overwrites = {
        guild.default_role: ctx.guild.PermissionOverwrite(read_messages=False),
        guild.me: ctx.guild.PermissionOverwrite(read_messages=True),
        admin_role: ctx.guild.PermissionOverwrite(read_messages=True)
    }
  await guild.create_text_channel('secret', overwrites=overwrites, category=category)```

标签: pythonpython-3.xdiscorddiscord.pybots

解决方案


这是因为事件是on_guild_join(guild). 试试这个:

@bot.event # or client.event based on your code
async def on_guild_join(guild):
    await guild.create_category('Friend')
    # rest of your code

因此,ctx事件不是传入 ,而是传入guild,您可以创建频道、角色、类别等,guild.create而不是ctx.guild.create


推荐阅读