Можно ли разделить Discord.py бот для нескольких файлов?

#python #discord #discord.py

Вопрос:

Итак, у меня есть мой бот Discord в одном файле (bot.py) и поскольку в нем много команд, моя команда помощи должна объяснять каждую команду, поскольку бот стремится быть функциональным, а также очень удобным в использовании. Как вы можете себе представить, это занимает много места. Что я хотел бы сделать, так это иметь основные команды в bot.py, и иметь все команды справки в отдельном файле (help.py) Возможно ли это? Если да, то как?

Комментарии:

1. Да, это возможно, взгляните на винтики и расширения . В вашем случае используйте расширения, но вы также можете комбинировать и то, и другое.

2. Большое вам спасибо, но более подробный ответ был бы очень полезен, если это возможно, поскольку в документации на самом деле нет примеров или чего-то подобного.

3. В документах приводится пример . Я всегда предлагаю посмотреть на RoboDanny , который был написан автором discord.py чтобы увидеть реализации.

Ответ №1:

Пример расширений

  • Файл называется foo.py
 import discord
from discord.ext import commands

@commands.command()
async def baz(ctx):
    await ctx.send("Whatever")


def setup(bot):
    # Every extension should have this function
    bot.add_command(baz)
 
  • Основной файл
 bot.load_extension("path.foo") # Path to the file, instead of using a slash use a period
 
  • Винтики (могут быть в основном файле)
 class MyCog(commands.Cog):
    def __init__(self, bot):
        self.bot = bot

    @commands.command()
    def baz(self, ctx):
        await ctx.send("something")

bot.add_cog(MyCog(bot))
 

Объединение винтиков и расширений

  • foo.py
 import discord
from discord.ext import commands

class MyCog(commands.Cog):
    def __init__(self, bot):
        self.bot = bot

    @commands.command()
    def baz(self, ctx):
        await ctx.send("something")

def setup(bot):
    bot.add_cog(MyCog(bot))
 
  • основной файл
 bot.load_extension("path.foo")
 

Для получения дополнительной информации взгляните на введение в винтики и расширения.

Кроме того, я предполагаю, что вы используете commands.Bot и назвали свой экземпляр бота bot

Комментарии:

1. Большое вам спасибо! Я долго искал способы сделать это!