askanton

Telegram bot moderator

May 26th, 2020
1,305
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 23.58 KB | None | 0 0
  1. Tutorial https://www.youtube.com/watch?v=Ju403AU7xtc
  2.  
  3.  
  4. from telebot import TeleBot  # Подключаем библиотеку
  5. import time  # Подключаем модуль времени
  6.  
  7. bot = TeleBot('**********************************************')  # Записываем токен
  8.  
  9. bad_words = ["жопа", "дурак", "мудак", "durak", "бля", "хуй",
  10.              "хуя"]  # Словарь для фраз которые мы будем автоматически удалять из чата
  11.  
  12. other_lang = ["c#", "c++", "дельфи", " ява ", "java", "php", " пхп", "swift", " свифт", " go ",
  13.               "javascript", "kotlin", " котлин", "rust", " раст ", "basic", " бейсик", " паскаль",
  14.               "golang", "pascal", "delphi", "perl", " перл ", "1c", " делфи", " си "]
  15. # Словарь для фраз на которыем мы будем реагировать стикером
  16.  
  17. other_bot = ["aiogram", "аиограм"]  # Еще один словарь для фраз на которыем мы будем реагировать стикером
  18.  
  19.  
  20. @bot.message_handler(
  21.     content_types=['new_chat_members'])  # Хендлер описывающий поведение бота при добавлении нового пользователя
  22. def greeting(message):  # Запуско основной функции хендлера
  23.     print("User " + message.new_chat_member.first_name + " added")  # Выводим в консоль имя нового пользователя
  24.     try:  # Пытаемся выполнить команду приведеную ниже
  25.         bot.reply_to(message, text='Приветствую тебя в нашем серпентарии. Будь вежливым, и мы постараемся тебе помочь!'
  26.                      , disable_notification=True)  # Выводим приветствие в чат
  27.     except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
  28.         print("GreetingError - Sending again after 5 seconds!!!")  # Выводим ошибку в консоль
  29.         time.sleep(3)  # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
  30.         bot.reply_to(message, text='Приветствую тебя в нашем серпентарии. Будь вежливым, и мы постараемся тебе помочь!'
  31.                      , disable_notification=True)  # Выводим приветствие в чат
  32.  
  33.  
  34. @bot.message_handler(
  35.     content_types=['left_chat_member'])  # Хендлер описывающий поведение бота при выходе пользователя из чата
  36. def not_greeting(message):  # Запуско основной функции хендлера
  37.     print("User " + message.left_chat_member.first_name + " left")  # Выводим в консоль имя ушедшего пользователя
  38.     try:  # Пытаемся выполнить команду приведеную ниже
  39.         bot.reply_to(message, text='Как жаль, что вы наконец-то уходите...',
  40.                      disable_notification=True)  # Выводим прощание в чат
  41.     except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
  42.         print("LeftError - Sending again after 5 seconds!!!")  # Выводим ошибку в консоль
  43.         time.sleep(3)  # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
  44.         bot.reply_to(message, text='Как жаль, что вы наконец-то уходите...',
  45.                      disable_notification=True)  # Выводим прощание в чат
  46.  
  47.  
  48. @bot.message_handler(commands=['start'])  # Хендлер описывающий поведение бота при вводе /start
  49. def starting(message):  # Запуско основной функции хендлера
  50.     try:  # Пытаемся выполнить команду приведеную ниже
  51.         bot.reply_to(message, text='Ты мне тут не стартуй!', disable_notification=True)  # Отвечаем на команду /start
  52.     except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
  53.         print("StartingError - Sending again after 3 seconds!!!")  # Выводим ошибку в консоль
  54.         time.sleep(3)  # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
  55.         bot.reply_to(message, text='Ты мне тут не стартуй!', disable_notification=True)  # Отвечаем на команду /start
  56.  
  57.  
  58. @bot.message_handler(commands=['command1'])  # Хендлер описывающий поведение бота при вводе command1
  59. def bui(message):  # Запуско основной функции хендлера
  60.     try:  # Пытаемся выполнить команду приведеную ниже
  61.         bui_pic = open('bui.webp', 'rb')  # Открывем стикер и присваиваем его переменной
  62.         bot.send_sticker(message.chat.id, bui_pic, reply_to_message_id=message.message_id,
  63.                          disable_notification=True)  # Отправляем стикер
  64.     except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
  65.         print("BuiError - Sending again after 3 seconds!!!")  # Выводим ошибку в консоль
  66.         time.sleep(3)  # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
  67.         bui_pic = open('bui.webp', 'rb')  # Открывем стикер и присваиваем его переменной
  68.         bot.send_sticker(message.chat.id, bui_pic, reply_to_message_id=message.message_id,
  69.                          disable_notification=True)  # Отправляем стикер
  70.  
  71.  
  72. @bot.message_handler(commands=['command2'])  # Хендлер описывающий поведение бота при вводе command2
  73. def zvezda(message):  # Запуско основной функции хендлера
  74.     try:  # Пытаемся выполнить команду приведеную ниже
  75.         zv_pic = open('zvezda.webp', 'rb')  # Открывем стикер и присваиваем его переменной
  76.         bot.send_sticker(message.chat.id, zv_pic, reply_to_message_id=message.message_id,
  77.                          disable_notification=True)  # Отправляем стикер
  78.     except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
  79.         print("ZvezdaError - Sending again after 3 seconds!!!")  # Выводим ошибку в консоль
  80.         time.sleep(3)  # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
  81.         zv_pic = open('zvezda.webp', 'rb')  # Открывем стикер и присваиваем его переменной
  82.         bot.send_sticker(message.chat.id, zv_pic, reply_to_message_id=message.message_id,
  83.                          disable_notification=True)  # Отправляем стикер
  84.  
  85.  
  86. @bot.message_handler(commands=['command3'])  # Хендлер описывающий поведение бота при вводе command3
  87. def jigurda(message):  # Запуско основной функции хендлера
  88.     try:  # Пытаемся выполнить команду приведеную ниже
  89.         jig_pic = open('jig.webp', 'rb')  # Открывем стикер и присваиваем его переменной
  90.         bot.send_sticker(message.chat.id, jig_pic, reply_to_message_id=message.message_id,
  91.                          disable_notification=True)  # Отправляем стикер
  92.     except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
  93.         print("JigurdaError - Sending again after 3 seconds!!!")  # Выводим ошибку в консоль
  94.         time.sleep(3)  # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
  95.         jig_pic = open('jig.webp', 'rb')  # Открывем стикер и присваиваем его переменной
  96.         bot.send_sticker(message.chat.id, jig_pic, reply_to_message_id=message.message_id,
  97.                          disable_notification=True)  # Отправляем стикер
  98.  
  99.  
  100. @bot.message_handler(commands=['help'])  # Хендлер описывающий поведение бота при вводе help
  101. def helper(message):  # Запуско основной функции хендлера
  102.     try:  # Пытаемся выполнить команду приведеную ниже
  103.         bot.reply_to(message, text='Гугл в помощь!', disable_notification=True)  # Отвечаем на команду /help
  104.     except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
  105.         print("HelperError - Sending again after 3 seconds!!!")  # Выводим ошибку в консоль
  106.         time.sleep(3)  # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
  107.         bot.reply_to(message, text='Гугл в помощь!', disable_notification=True)  # Отвечаем на команду /help
  108.  
  109.  
  110. @bot.message_handler(content_types=['voice'])  # Хендлер описывающий поведение бота при голосовом сообщении в чате
  111. def voice_msg(message):  # Запуско основной функции хендлера
  112.     try:  # Пытаемся выполнить команду приведеную ниже
  113.         jpg_pic = open('voice.webp', 'rb')  # Открывем стикер и присваиваем его переменной
  114.         bot.send_sticker(message.chat.id, jpg_pic, reply_to_message_id=message.message_id,
  115.                          disable_notification=True)  # Отправляем стикер
  116.     except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
  117.         print("Audio_msgError - Sending again after 3 seconds!!!")  # Выводим ошибку в консоль
  118.         time.sleep(3)  # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
  119.         jpg_pic = open('voice.webp', 'rb')  # Открывем стикер и присваиваем его переменной
  120.         bot.send_sticker(message.chat.id, jpg_pic, reply_to_message_id=message.message_id,
  121.                          disable_notification=True)  # Отправляем стикер
  122.  
  123.  
  124. @bot.message_handler(
  125.     content_types=['pinned_message'])  # Хендлер описывающий поведение бота после того, как было закрепленно сообщение
  126. def pinned_msg(message):  # Запуско основной функции хендлера
  127.     try:  # Пытаемся выполнить команду приведеную ниже
  128.         bot.reply_to(message, text='Ну, теперь заживем!',
  129.                      disable_notification=True)  # Отвечаем на закрепленное сообщение
  130.     except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
  131.         print("PinnedError - Sending again after 3 seconds!!!")  # Выводим ошибку в консоль
  132.         time.sleep(3)  # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
  133.         bot.reply_to(message, text='Ну, теперь заживем',
  134.                      disable_notification=True)  # Отвечаем на закрепленное сообщение
  135.  
  136.  
  137. @bot.message_handler(content_types=['audio'])  # Хендлер описывающий поведение бота при добавлении аудиофайла в чат
  138. def audio_msg(message):  # Запуско основной функции хендлера
  139.     try:  # Пытаемся выполнить команду приведеную ниже
  140.         jpg_pic = open('002.jpg', 'rb')  # Открывем изображение и присваиваем его переменной
  141.         bot.send_sticker(message.chat.id, jpg_pic, reply_to_message_id=message.message_id,
  142.                          disable_notification=True)  # Отправляем изображение
  143.     except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
  144.         print("Audio_msgError - Sending again after 3 seconds!!!")  # Выводим ошибку в консоль
  145.         time.sleep(3)  # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
  146.         jpg_pic = open('002.jpg', 'rb')  # Открывем изображение и присваиваем его переменной
  147.         bot.send_sticker(message.chat.id, jpg_pic, reply_to_message_id=message.message_id,
  148.                          disable_notification=True)  # Отправляем изображение
  149.  
  150.  
  151. @bot.message_handler(content_types=['text'])  # Хендлер описывающий поведение бота на текст в чате
  152. def txt(message):  # Запуско основной функции хендлера
  153.     for i in range(0, len(bad_words)):  # Перебираем все элементы словаря по очереди
  154.         if bad_words[i] in message.text.lower():  # Проверяем наличие каждого слова из нашего словаря в сообщении
  155.             try:  # Пытаемся выполнить команду приведеную ниже
  156.                 bot.delete_message(message.chat.id, message.message_id, )  # Удаляем сообщение
  157.                 print(message.text + " delited")  # Выводим удаленное сообщение в консоль
  158.             except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
  159.                 print("BadWordsError - Sending again after 3 seconds!!!")  # Выводим ошибку в консоль
  160.                 time.sleep(3)  # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
  161.                 bot.delete_message(message.chat.id, message.message_id)  # Удаляем сообщение
  162.                 print(message.text + " delited")  # Выводим удаленное сообщение в консоль
  163.  
  164.     for l in range(0, len(other_lang)):  # Перебираем все элементы словаря по очеред
  165.         if other_lang[l] in message.text.lower():  # Проверяем наличие каждого слова из нашего словаря в сообщении
  166.             try:  # Пытаемся выполнить команду приведеную ниже
  167.                 get_pic = open('get_out.webp', 'rb')  # Открывем стикер и присваиваем его переменной
  168.                 bot.send_sticker(message.chat.id, get_pic, reply_to_message_id=message.message_id,
  169.                                  disable_notification=True)  # Отправляем стикер
  170.             except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
  171.                 print("LangError - Sending again after 3 seconds!!!")  # Выводим ошибку в консоль
  172.                 time.sleep(3)  # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
  173.                 get_pic = open('get_out.webp', 'rb')  # Открывем стикер и присваиваем его переменной
  174.                 bot.send_sticker(message.chat.id, get_pic, reply_to_message_id=message.message_id,
  175.                                  disable_notification=True)  # Отправляем стикер
  176.  
  177.     for f in range(0, len(other_bot)):  # Перебираем все элементы словаря по очеред
  178.         if other_bot[f] in message.text.lower():  # Проверяем наличие каждого слова из нашего словаря в сообщении
  179.             try:  # Пытаемся выполнить команду приведеную ниже
  180.                 pss_pic = open('animation.gif.mp4', 'rb')  # Открывем видео и присваиваем его переменной
  181.                 bot.send_animation(message.chat.id, pss_pic, reply_to_message_id=message.message_id,
  182.                                    disable_notification=True)  # Отправляем видео
  183.             except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
  184.                 print("AnimError - Sending again after 3 seconds!!!")  # Выводим ошибку в консоль
  185.                 time.sleep(3)  # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
  186.                 pss_pic = open('animation.gif.mp4', 'rb')  # Открывем видео и присваиваем его переменной
  187.                 bot.send_animation(message.chat.id, pss_pic, reply_to_message_id=message.message_id,
  188.                                    disable_notification=True)  # Отправляем видео
  189.  
  190.     if message.text == 'Спой, птичка!':  # Ищем нашу фразу в тексте сообщения
  191.         try:  # Пытаемся выполнить команду приведеную ниже
  192.             bot.reply_to(message, text='Ща спою!')  # Отвечаем на сообщение
  193.             sti = open('001.mp3', 'rb')  # Открывем аудио и присваиваем его переменной
  194.             bot.send_audio(message.chat.id, audio=sti, reply_to_message_id=message.message_id,
  195.                            disable_notification=True)  # Отправляем аудио
  196.         except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
  197.             print("SongError - Sending again after 3 seconds!!!")  # Выводим ошибку в консоль
  198.             time.sleep(3)  # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
  199.             bot.reply_to(message, text='Ща спою!')  # Отвечаем на сообщение
  200.             sti = open('001.mp3', 'rb')  # Открывем аудио и присваиваем его переменной
  201.             bot.send_audio(message.chat.id, audio=sti, reply_to_message_id=message.message_id,
  202.                            disable_notification=True)  # Отправляем аудио
  203.  
  204.  
  205.     elif message.text == "Cкайнет восстаёт!":  # Ищем нашу фразу в тексте сообщения
  206.         try:  # Пытаемся выполнить команду приведеную ниже
  207.             ver_pic = open('hqdefault.jpg', 'rb')  # Открывем изображение и присваиваем его переменной
  208.             bot.send_photo(message.chat.id, ver_pic, reply_to_message_id=message.message_id,
  209.                            disable_notification=True)  # Отправляем изображение
  210.         except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
  211.             print("VerError - Sending again after 3 seconds!!!")  # Выводим ошибку в консоль
  212.             time.sleep(3)  # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
  213.             ver_pic = open('hqdefault.jpg', 'rb')  # Открывем изображение и присваиваем его переменной
  214.             bot.send_photo(message.chat.id, ver_pic, reply_to_message_id=message.message_id,
  215.                            disable_notification=True)  # Отправляем изображение
  216.  
  217.  
  218.  
  219.  
  220.     elif " бот " in message.text.lower():  # Ищем нашу фразу в тексте сообщения
  221.         try:  # Пытаемся выполнить команду приведеную ниже
  222.             bot.reply_to(message, text='Боты не то, чем кажутся...', disable_notification=True)  # Отвечаем на сообщение
  223.         except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
  224.             print("Stop_wordError - Sending again after 3 seconds!!!")  # Выводим ошибку в консоль
  225.             time.sleep(3)  # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
  226.             bot.reply_to(message, text='Боты не то, чем кажутся...', disable_notification=True)  # Отвечаем на сообщение
  227.     else:  # Если ничего не подошло
  228.         pass  # Идём дальше
  229.  
  230.  
  231. if __name__ == '__main__':  # Блок запуска бота
  232.     try:  # Пытаемся выполнить команду приведеную ниже
  233.         bot.polling(none_stop=True)  # Запускаем бота
  234.     except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
  235.         print("PollingError - Sending again after 5 seconds!!!")  # Выводим ошибку в консоль
  236.         time.sleep(5)  # Делаем паузу в 5 секунд и выполняем команду приведеную ниже
  237.         bot.polling(none_stop=True)  # Запускаем бота
Add Comment
Please, Sign In to add comment