Discord.py бот-задача l oop не работает в фоновом режиме - PullRequest
0 голосов
/ 15 апреля 2020

Я новичок в программировании ботов и не могу запустить задачу в фоновом режиме.

Данная функция прослушивает поток ir c и собирает данные при создании определенных сообщений. В настоящее время он существует и работает нормально, если я использую os.popen в сценарии, но я бы предпочел, чтобы данные были частью бота, что значительно облегчило бы их обработку. Что происходит, когда я запускаю @ task.l oop, он запускается, но бот перестает отвечать на чаты.

Вот весь Cog (слегка измененный, чтобы его было легче читать):

class IRC(commands.Cog):
    def __init__(self, bot):
        self.index = 0
        self.bot = bot
        load_dotenv()
        token = os.getenv('IRC_TOKEN')
        nickname = os.getenv('IRC_NICK')
        server = os.getenv('IRC_SERVER')
        port = os.getenv('IRC_PORT')
        channel = os.getenv('IRC_CHANNEL')
        self.sock = socket.socket()
        self.sock.connect((server, port))
        self.sock.send(f"PASS {token}\n".encode('utf-8'))
        self.sock.send(f"NICK {nickname}\n".encode('utf-8'))
        self.sock.send(f"JOIN {channel}\n".encode('utf-8'))
        print("Listening to IRC")
        self.reader.start()

    @tasks.loop(seconds=0)
    async def reader(self):
        resp = self.sock.recv(2048).decode('utf-8')
        # print(resp)
        if resp.startswith('PING'):
            self.sock.send("PONG\n".encode('utf-8'))
        elif len(resp) > 0:
            if resp.startswith("listening phrase"):
                print(resp)
        else: pass    

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

Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...