Я новичок в программировании ботов и не могу запустить задачу в фоновом режиме.
Данная функция прослушивает поток 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))
Есть идеи?