Создание дискорд бота для спама

import discord
import time

client = discord.Client()

@client.event
async def on_ready():
    print('Connected to Discord! {0.user}'.format(client))

@client.event
async def on_message(message):
    if message.content.lower() == '"spam':
        while True:
            await message.channel.send('SPAM')
            time.sleep(2)
            if message.content.lower() == '"stop':
                break


client.run('token')

Короче, хотел для тренировки создать бот для дискорда, который как только кто нибудь вводит сообщение "spam в чат дискорд-сервера, бот начинал спамить одно сообщение "SPAM, а как только кто нибудь вводил "stop то он бы останавливался, но у меня не получилось и он не останавливается, а продолжает спамить! Как решить данную проблему (мне нужен не только совет как это исправить, но и исправленный код, пожалуйста) Код вверху


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

Автор решения: Tawero King

В асинхроне не силен но суть думаю плюс минус одна.

У тебя обработчик сообщений получил слово спам и ушёл в бесконечный цикл отправки.. и пока он в бесконечном цикле он не получит заветное слово стоп.

Попробуй так

    spam = False #Создаем переменную спам, и устанавливаем значение фолс
    @client.event
    async def on_message(message):
        if message.content.lower() == '"spam':
            spam = True #Задаём true
            while spam: #Если spam true то спамим, а если false то перестаём.
                await message.channel.send('SPAM')
                time.sleep(2)

        if message.content.lower() == '"stop':
            spam = False #Получили смс стоп, задали фолс для остановки спама
→ Ссылка