python 使用www.example.com从不同文件导入树斜线命令discord.py

nwlls2ji  于 2023-01-29  发布在  Python
关注(0)|答案(1)|浏览(132)

我正在学习如何使用www.example.com创建discord botdiscord.py(对python来说也还是个新手)。
我正在尝试使用app_commands命令树实现多个斜杠命令。下面是我的代码的简化版本(足以解释我的问题)。

import discord
    from discord import app_commands
    
    guild_id = 'xxxxxx'
    token = 'xxxxxx'
    
    intents = discord.Intents.default()
    intents.message_content = True
    client = discord.Client(intents=intents)
    
    @client.event
    async def on_ready():
      await tree.sync(guild=discord.Object(id=guild_id))
      print('Bot has started')
    
    tree = app_commands.CommandTree(client)
    
    @tree.command(name="listencouragements",
                  description="List all encouragements messages",
                  guild=discord.Object(id=guild_id))
    async def listEncouragement(interaction: discord.Interaction):
      print('List: [1, 2 ,3]')
    
    @tree.command(name="moreecouragements",
                  description="More encouragements messages",
                  guild=discord.Object(id=guild_id))
    async def listEncouragement(interaction: discord.Interaction):
      print('This is more encouragements: [4, 5, 6]')
    
    client.run(token)

我试图创建一个不同的文件[slash.py],在那里我可以放置所有的树.命令,然后使用load_extensions将它们导入主文件。

#slash.py [This file is new, and I have
    #     no clue what to put here nor how to put here the commands]

    import discord
    from discord.ext import commands

    @commands.hybrid_command()
    async def hello(ctx):
      await ctx.send(f"Hello {ctx.author.display_name}!")

    async def setup(bot):
      bot.add_command(hello)

    #main.py
    import slash

    ....

    async def on_ready():

      await [the bot object that I dont know].load_extension(slash)

    ....

我知道它的存在,但是我不知道怎么做。有.load_extension(斜杠)的对象是什么?我做的方法对吗?

yqkkidmi

yqkkidmi1#

load_extensioncommands.Bot的一种方法。

在您的示例中,您使用的是Client而不是BotBot无法访问任何这些功能。您还使用了add_command()add_command()也是Bot的一种方法。如果您想要Bot功能,请使用Bot。如果您不想要Bot功能,请选择您想要的任何一种。
另外,不要在on_ready中加载扩展。扩展加载应该通过覆盖setup_hook来完成。

相关问题