@megared

Код застывает в ожидании сообщений в модуле discord.py, как решить?

Бот ждёт новых сообщений в строке
@bot.event
    async def on_message(message):
        if message.content == ('qq'):
            channel = message.channel
            await channel.send('здарова')

И перестаёт реагировать на команды по типу "$пинг" и так далее, поскольку занят ожиданием новых сообщений. Как решить? Вот весь код:

import discord
import json
import requests
import asyncio
from discord.ext import commands
import discord.utils

TOKEN = 'токен'
bot = commands.Bot(command_prefix='$')  # инициализируем бота с префиксом '$'

try:
    print('started')
    @bot.event
    async def on_message(message):
        if message.content == ('qq'):
            channel = message.channel
            await channel.send('здарова')
    @bot.command() #разрешаем передавать агрументы
    async def пинг(ctx): #создаем асинхронную фунцию бота
        await ctx.send('Привет! Я бот Red!') #отправляем обратно аргумент
    @bot.command()
    async def роли(ctx):
        member = ctx.message.author
        member_roles = member.roles
        await ctx.send(f"{member.mention} список твоих ролей:\n{member_roles}")
    @bot.command()
    async def ищи(ctx, arg):
        response = requests.get('https://some-random-api.ml/img/' + str(arg.lower()))  # Get-запрос
        json_data = json.loads(response.text)  # Извлекаем JSON
        embed = discord.Embed(color=0xff9900, title='Изображение:')  # Создание Embed'a
        embed.set_image(url=json_data['link'])  # Устанавливаем картинку Embed'a
        await ctx.send(embed=embed)  # Отправляем Embed
    bot.run(TOKEN)
except Exception as exc:
    print(exc)
  • Вопрос задан
  • 490 просмотров
Решения вопроса 1
shurshur
@shurshur
Сисадмин, просто сисадмин...
Это известная проблема, ответ в FAQ в первом же пункте https://discordpy.readthedocs.io/en/latest/faq.htm...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы