#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. Большое вам спасибо! Я долго искал способы сделать это!