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