Как закрыть клиент в Discord py программно
Такая проблема - есть бот для Discord, написанный на Python. Необходимо, чтобы он закрывался при наступлении определенных условий в программе (например, по таймеру). Я перечитал инструкции к библиотеке, но в них вроде как максимум программа может среагировать на закрытие клиента, но не может сама его закрыть. Есть ли методы?
@client.event
async def close_client():
await client.close()
def Stop_Keeper():
global end_of_all
while end_of_all == True:
if data_of_cfg[8] == '9ON_RUN = 0':
end_of_all = False
asyncio.run(close_client())
Ответы (1 шт):
Я нашел ответ на свой вопрос - рабочий метод, проверил. Функция client.close(), как я понял, работает только в рамках событий самого Discord. Значит, мне нужно инициировать событие в самом Discord, на которое среагирует бот, а уже при обработке события применить client.close(). В моем случае я отправил программой в Discord сообщение 'Бот остановлен через программу', на которое бот реагирует возникновением события on_message():
@client.event
async def on_message(message):
global CHANNEL_ID
if str(CHANNEL_ID) == str(message.channel.id):
if message.content == 'Бот остановлен через программу':
await client.close()
return
Условие - сравнивает в каком канале было опубликовано сообщение (чтобы не реагировать на ВСЕ сообщения в сообществе)