async on_message в socketio
Мне нужно сделать функцию в дискорд боте, которая будет получать данные о поступившем донате в DonationAlerts, создавать Embed с этими данными и отправлять в специальный текстовый канал. У меня есть код, который только получает и выводит данные в консоль. Вот он:
import json, socketio
TOKEN = "cho-to"
sio = socketio.Client()
@sio.on('connect')
def on_connect():
sio.emit('add-user', {"token": TOKEN, "type": "alert_widget"})
@sio.on('donation')
def on_message(data):
donation = json.loads(data)
print(donation['username'])
print(donation['message'])
print(donation['amount'])
print(donation['currency'])
sio.connect('wss://socket.donationalerts.ru:443', transports='websocket')
Проблема в том, что ивент on_message
из socketio
видимо не асинхронен, поэтому создать и отправить Embed я не могу. Я пробовал просто дописать async
перед def
, но к успеху не привело.
Еще я пробовал сделать это через другую API - DonationAlertsAPI, но там нужно авторизовываться через веб и это не самое главное, главное то, что у меня вообще не работал код, который был в гайде.
Так как это можно исправить, при этом не убирая асинхронность в коде?