Python отправка сообщений на дискорд - PullRequest
0 голосов
/ 02 февраля 2020

У меня следующая проблема. У меня есть многопоточное приложение, и я хочу, чтобы оно отправляло сообщение на дискорд-канал, когда указанное условие c выполнено. Модуль Discord: https://discordpy.readthedocs.io/en/latest/ создан для записи асинхронных / ожидающих. Мое приложение является многопоточным, потому что оно больше связано с процессором, чем с IO. Я хочу объединить мое многопоточное приложение с модулем асинхронного / ожидающего разногласий. Я создал следующий фрагмент кода.

import discord
import asyncio
from threading import Thread

class DiscordConnector:
    def __init__(self):
        self.token = "token"
        self.imageFolder = "folder"
        self.client = discord.Client()
        self.loop = asyncio.get_event_loop()
        self.loop.create_task(self.client.start(self.token))

        self.thread = Thread(target=self.loop.run_forever)
        self.thread.start()


        self.channels = {
            "chanel1":channel1_id,
            "channel2":channel2_id,
            "channel3":channel3_id,
        }

     def sendMessage(self, symbol, imageFilename):
        symbols = symbol.split("_")
        symbol = symbols[0].lower()
        interval = symbols[1]
        self.client.get_channel(self.channels[symbol]).send("message", file=discord.File(file))

Я вызываю его в другом модуле, создав объект DiscordConnector и вызвав метод sendMessage. Проблема, с которой я столкнулся, заключается в том, что self.client.get_channel (self.channels [symbol]) возвращает объект None, похоже, он не может попасть в объект self.client из sendMessage. Инициализация клиента выглядит нормально, потому что сервер помечен как онлайн в приложении Discord. Есть ли у вас какие-либо идеи о том, как объединить мое многопоточное приложение с синтаксисом discord async / await для вызова метода из DiscordConnector, когда есть такая цель для отправки сообщения на канал Discord.

...