Я получаю эту ошибку: предупреждение о времени выполнения: сопрограмма никогда не ожидалась

#python #discord #discord.py

Вопрос:

При попытке запустить своего бота discord я получаю эту ошибку.
Вот мой код.

 import discord

from discord.ext import commands

client = commands.Bot(command_prefix=' ')


@client.command(pass_context = True)
async def ping(ctx):
    channel = bot.get_channel("826609837600931861")
    await channel.send('h')


client.login('XXXXXXXXXXXXXX')
 

Ошибка:

RuntimeWarning: coroutine 'Client.login' was never awaited

Ответ №1:

client.login это сопрограмма. Вы можете запустить его с помощью asyncio

 import asyncio
#other code here

asyncio.run(client.login('token'))
 

Рекомендации:

Комментарии:

1. Здравствуйте, я не понимаю, как это реализовать в моем коде. Как бы я мог использовать asyncio для этого.

2. Просто, просто измените последнюю строку, вам нужен asyncio для запуска сопрограммы, если вы не находитесь внутри асинхронной функции

Ответ №2:

Вы можете использовать client.run (). это сделает все вещи eventloop за вас.

 import discord

from discord.ext import commands

client = commands.Bot(command_prefix=' ')


@client.command(pass_context = True)
async def ping(ctx):
    channel = bot.get_channel("826609837600931861")
    await channel.send('h')


client.run('XXXXXXXXXXXXXX')
 

Комментарии:

1. Спасибо за отзыв, но моя цель состоит в том, чтобы бот отправил сообщение по определенному каналу, а затем вышел в автономный режим, как бы я мог это сделать.

2. взгляните на событие on_ready. discordpy.readthedocs.io/en/latest/… вы можете отправить туда сообщение и закрыть бота с помощью .close()

3. @JoeJay, это на самом деле относится к отдельному вопросу, ваш вопрос заключался в том, что вы не смогли запустить сопрограмму, и я думаю, что оба ответа ответили на это правильно. Пожалуйста, сформулируйте свой вопрос и свои намерения точно.