У меня есть асинхронная функция A которая вызывается по event on_raw_reaction_add, в ней я пытаюсь поставить в поток другую асинхронную функцию B через модуль threading. Функция B выполняет отправку сообщений в канал из своих аргументов.
Я плохо знаком с корутинами и потоками, но как я понимаю поставить в поток можно только асинхронную функцию. Я пробую это сделать в функции A без использования await исходя из логики прерывания, и получаю ошибку - `RuntimeWarning: coroutine 'FarmZat' was never awaited`. Тогда я подставляю await к `FarmZ.start()` и при выполнении функции A снова получаю ошибку `TypeError: object NoneType can't be used in 'await' expression`.
Что я делаю не правильно и как нужно поставить функцию в поток? Буду благодарен за помощь, даже за ссылку в документацию.
A:
B:
Я плохо знаком с корутинами и потоками, но как я понимаю поставить в поток можно только асинхронную функцию. Я пробую это сделать в функции A без использования await исходя из логики прерывания, и получаю ошибку - `RuntimeWarning: coroutine 'FarmZat' was never awaited`. Тогда я подставляю await к `FarmZ.start()` и при выполнении функции A снова получаю ошибку `TypeError: object NoneType can't be used in 'await' expression`.
Что я делаю не правильно и как нужно поставить функцию в поток? Буду благодарен за помощь, даже за ссылку в документацию.
A:
Python:
async def CreateFarmChannel(member: discord.Member):
guild = bot.get_guild(880008097370865706)
category = discord.utils.get(guild.categories, name="Фермы")
channel = await guild.create_text_channel(f'⛏{member.name}', category=category)
await channel.set_permissions(guild.default_role, read_messages=False)
await channel.set_permissions(member, read_messages=True, send_messages=True)
FarmZ = Thread(target=FarmZat, args=(member, channel))
FarmZ.start()
B:
Python:
async def FarmZat(member: discord.Member, channel):
await channel.send("Канал создан")