Асинхронные события в другом файле - PullRequest
0 голосов
/ 15 ноября 2018

Я создаю бот-диск, используя API-интерфейс discord.py. После некоторого кодирования я понял, что должен содержать код в чистоте и сохранять команды и события в отдельных файлах .py. Как я могу сделать, чтобы это событие или команда все еще слушали триггер и находились в отдельных файлах? Я пытался сделать это с import, но он просто импортирует классы. Пример команды:

@client.command(pass_context=True) async def kick(ctx, *, member: discord.Member = None): if ctx.message.channel.permissions_for(ctx.message.author).administrator is True: await client.send_message(member, settings.kick_direct) await client.kick(member) await client.say(settings.kick_message + member.mention + settings.kick_message2) else: await client.say(settings.permission_error)

1 Ответ

0 голосов
/ 15 ноября 2018

Вам необходимо загрузить расширение в файл, в котором вы создаете клиент discord.py.См. Пример ниже.

bot.py

from discord.ext import commands

client = commands.Bot(command_prefix='!')

client.load_extension('cog')

@client.event
async def on_ready():
    print('client ready')

@client.command()
async def ping():
    await client.say('Pong')

client.run('TOKEN')

cog.py

from discord.ext import commands

class TestCog:

    def __init__(self, bot):
        self.bot = bot
        self.counter = 0

    @commands.command()
    async def add(self):
        self.counter += 1
        await self.bot.say('Counter is now %d' % self.counter)


def setup(bot):
    bot.add_cog(TestCog(bot))
...