Как поставить в поток функцию из другой асинхронной discord.py

Статус
Закрыто для дальнейших ответов.

Иннокентий

Новичок
Пользователь
Авг 6, 2020
4
0
1
У меня есть асинхронная функция 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:
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("Канал создан")
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 583
457
83
не нужно плодить темы...
 
Последнее редактирование:
Статус
Закрыто для дальнейших ответов.

Форум IT Специалистов