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, но там нужно авторизовываться через веб и это не самое главное, главное то, что у меня вообще не работал код, который был в гайде.

Так как это можно исправить, при этом не убирая асинхронность в коде?


Ответы (0 шт):