Discord Discord Bot #2 Отклик на опреденные сообщения

Chaka

Новичок
Регистрация
27 Дек 2020
Сообщения
5
Реакции
6
Всем приветульки!
Сегодня обуздаем простеньку-маленькую интересную штучечку.
В прошлом уроке мы разобрались как можно создать команды и как заставить бота откликаться на каждое сообщение.
Но что делать, если вы хотите заставить бота откликаться на сообщения определенного содержания?
А сейчас и узнаете :)

Цель: Заставить бота откликаться на определенные сообщения.

Из прошлого урока в самом конце у нас остался вот такой код:
Python:
from discord.ext import commands


class Testing(commands.Cog):

    def __init__(self, py):
        self.py = py

    @commands.Cog.listener()
    async def on_message(self, message):
        if message.author.bot:
            return
        await message.channel.send('Ты написал сообщение!')


def setup(py):
    py.add_cog(Testing(py))

Как мы все уже знаем - он позволяет нам заставлять бота откликаться на абсолютно любое сообщение в чате.

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

Самый простой пример:
Добавим массив hello, в нем будут храниться слова привет и ку - hello = ['привет', 'ку']
Писать слова НУЖНО только в нижнем регистре. Это нужно для того, чтобы бот откликался на желаемое слово даже если участник написал его КАПСОМ. Капс будет переводиться в нижний регистр автоматически в коде ниже.

В функции отклика на сообщения пишем следующее:
Python:
msg= message.content.lower()
if msg in hello:
    await message.channel.send('Привет!')

message = message.content.lower() - именно этот код переводит верхний регистр в нижний.
if message in hello - позволяем найти контент сообщения в списке желаемых слов для отклика.
await message.channel.send('Привет!') - ну а здесь просто пишите сообщение, которое хотите написать на этот отклик.

Смотрим что у нас получилось



Все работает как надо! Ура!

Можно также добавить и целое предложение для отклика:
Список теперь выглядит так - hello = ['привет', 'ку', 'привет как дела?']



Всё просто ЗА-МЕ-ЧА-ТЕЛЬ-НО!

Получился у нас этот код:
Python:
from discord.ext import commands

hello = ['привет', 'ку', 'привет как дела?']

class Testing(commands.Cog):

    def __init__(self, py):
        self.py = py

    @commands.Cog.listener()
    async def on_message(self, message):
        if message.author.bot:
            return
        msg = message.content.lower()
        if msg in hello:
            await message.channel.send('Привет!')



def setup(py):
    py.add_cog(Testing(py))

Теперь Вы можете сами добавлять слова/предложения для отклика. Удачи в ботокрафтинге! ;)
 
Последнее редактирование:
  • Мне нравится
Реакции: Valstan и SaNeR

Valstan

Новичок
Регистрация
13 Янв 2021
Сообщения
2
Реакции
1
Зарождение Терминатора!:oops: Сначала привет, привет, а потом штаны отбирать начнет ))):cautious::devilish:
 
  • Мне нравится
Реакции: SaNeR
Сверху Снизу