Задать вопрос
@Archeriys

Как исправить ошибку 400: ответ на сообщение не найден telebot на Python?

import telebot
import time
from telebot.types import Message
from datetime import datetime, timedelta

bot = telebot.TeleBot("token") # заменить на свой токен

# Список замученных пользователей со временем мута и причиной
mute_list = []

# Список забаненных пользователей с причиной
ban_list = []


# Функция проверки сообщения на мат и удаления сообщения
def check_message(message: Message):
    # Список матерных слов
    bad_words = ['сука', 'хуй', 'пизда', 'ебать', 'нахуй', 'блять', 'дебил', 'дибил']
    # Проверяем, есть ли в сообщении матерные слова
    if any(word in message.text.lower() for word in bad_words):
        # Удаляем сообщение
        bot.delete_message(message.chat.id, message.message_id)
        # Ищем, есть ли уже у пользователя варн
        warned = next((user for user in mute_list if user['id'] == message.from_user.id), None)
        if warned:
            # Увеличиваем счетчик варнов на 1
            warned['count'] += 1
            # Если количество варнов достигло трех, выдаем мут на 1 день
            if warned['count'] == 3:
                # Добавляем пользователя в список замученных
                mute_list.append({'id': message.from_user.id, 'until': datetime.now()+timedelta(days=1), 'reason': 'мат'})
                # Выдаем мут на 1 день
                bot.restrict_chat_member(message.chat.id, message.from_user.id, until_date=int(time.time()+86400))
                # Сбрасываем количество варнов до 0
                warned['count'] = 0
            else:
                # Если количество варнов еще не достигло трех, выдаем пользователю варн
                bot.send_message(message.chat.id, f'Вы получили варн за мат.\nКоличество варнов: {warned["count"]}/3', reply_to_message_id = message.message_id)
        else:
            # Если у пользователя еще нет варнов, добавляем его в список со значением 1
            mute_list.append({'id': message.from_user.id, 'count': 1})
            bot.send_message(message.chat.id, f'{message.from_user.first_name} получает варн.\nКоличество варнов: 1/3\nПричина: Мат', reply_to_message_id = message.message_id)


# Обработка команды варн
@bot.message_handler(commands=['warn'])
def warn_handler(message: Message):
    # Проверяем, что у сообщения есть ответный пользователь
    if message.reply_to_message:
        # Добавляем пользователя в список со значением 1 варн
        mute_list.append({'id': message.reply_to_message.from_user.id, 'count': 1})
        # Выдаем пользователю варн за мат
        bot.send_message(message.chat.id, f'{message.reply_to_message.from_user.first_name} получает варн.\nКоличество варнов: 1/3\nПричина: Мат.', reply_to_message_id = message.message_id)
    else:
        bot.send_message(message.chat.id, 'Вы забыли ответить на сообщение пользователя.')


# Обработка команды размут
@bot.message_handler(commands=['unmute'])
def unmute_handler(message: Message):
    # Проверяем, что у сообщения есть ответный пользователь
    if message.reply_to_message:
        # Удаляем пользователя из списка замученных
        mute_list.remove(next((user for user in mute_list if user['id'] == message.reply_to_message.from_user.id), None))
        # Размучиваем пользователя
        bot.restrict_chat_member(message.chat.id, message.reply_to_message.from_user.id, until_date=0)
        bot.send_message(message.chat.id, f'Срок молчания {message.reply_to_message.from_user.first_name} окончен, но лучше следите за языком...', reply_to_message_id = message.message_id)
    else:
        bot.send_message(message.chat.id, 'Вы забыли ответить на сообщение пользователя.')


# Обработка команды бан
@bot.message_handler(commands=['ban'])
def ban_handler(message: Message):
    # Проверяем, что у сообщения есть ответный пользователь
    if message.reply_to_message:
        # Добавляем пользователя в список забаненных
        ban_list.append({'id': message.reply_to_message.from_user.id, 'reason': 'нарушение правил'})
        # Баним пользователя
        bot.ban_chat_member(message.chat.id, message.reply_to_message.from_user.id)
        bot.send_message(message.chat.id, f'{message.reply_to_message.from_user.first_name} был забанен.\nПричина: Нарушение правил.', reply_to_message_id = message.message_id)
    else:
        bot.send_message(message.chat.id, 'Вы забыли ответить на сообщение пользователя.')
# Обработка команды разбан
@bot.message_handler(commands=['unban'])
def unban_handler(message: Message):
    # Проверяем, что у сообщения есть ответный пользователь
    if message.reply_to_message:
        # Удаляем пользователя из списка забаненных
        for user in ban_list:
            if user['id'] == message.reply_to_message.from_user.id:
                ban_list.remove(user)
                break
        # Разбаниваем пользователя
        bot.unban_chat_member(message.chat.id, message.reply_to_message.from_user.id)
        bot.send_message(message.chat.id, f'Пользователь {message.reply_to_message.from_user.first_name} разбанен.')
    else:
        bot.send_message(message.chat.id, 'Вы забыли ответить на сообщение пользователя.')

# Обработка команды Мутлист
@bot.message_handler(commands=['mutelist'])
def mute_list_handler(message: Message):
    # Генерируем текст списка замученных пользователей
    text = '\n'.join([f'{user["id"]} - {user["until"]} - {user["reason"]}' for user in mute_list])
    bot.send_message(message.chat.id, f'Список замученных пользователей:\n{text}')

# Обработка команды Банлист
@bot.message_handler(commands=['banlist'])
def ban_list_handler(message: Message):
    # Генерируем текст списка забаненных пользователей
    text = '\n'.join([f'{user["id"]} - {user["reason"]}' for user in ban_list])
    bot.send_message(message.chat.id, f'Список забаненных пользователей:\n{text}')

# Обработка всех сообщений
@bot.message_handler(func=lambda message: True)
def all_message_handler(message: Message):
    # Проверяем сообщение на наличие матерных слов
    check_message(message)

bot.polling()
  • Вопрос задан
  • 65 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ваш ответ на вопрос

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

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