refactor bot

This commit is contained in:
KatykhinAA
2024-07-03 23:06:10 +03:00
parent 908682d05a
commit 20d92856b4
2 changed files with 298 additions and 236 deletions

473
main.py
View File

@@ -3,7 +3,7 @@ import os
import sys
from pathlib import Path
from time import sleep
from enum import Enum
import db
from db import BotDB
import telebot
@@ -32,59 +32,122 @@ LOGS = config.getboolean('Settings', 'logs')
TEST = config.getboolean('Settings', 'test')
# Инициализируем бота и базку
bot = telebot.TeleBot(BOT_TOKEN, parse_mode=None)
BotDB = BotDB('tg-bot-database')
def telegram_bot():
# Черный список
#TODO: state хранить в базе
#TODO: Перенести обработчик коллбэков
@bot.message_handler(commands=['admin'], user_id=842766148)
def admin_panel(message):
try:
class State(Enum):
START = "START"
SUGGEST = "SUGGEST"
ADMIN = "ADMIN"
CHAT = "CHAT"
PRE_CHAT = "PRE_CHAT"
class TelegramHelperBot:
def __init__(self, token):
self.bot = telebot.TeleBot(token)
self.state = State.START
# Router for user
@self.bot.message_handler(func=lambda message: True, chat_types=['private'])
def handle_message(message):
if self.state == State.START:
if message.text == '/start':
print(f'Внутри функции handle_message // Команда /start // state - {self.state.value}')
self.start_message(message)
elif message.text == '📢Предложить свой пост':
print(f'Внутри функции handle_message // Команда /suggest // state - {self.state.value}')
self.suggest_post(message)
self.state = State.SUGGEST
elif message.text == '🤪Хочу стикеры':
print(f'Внутри функции handle_message // Команда /stickers // state - {self.state.value}')
self.stickers(message)
self.state = State.START
elif message.text == '📩Связаться с админами':
print(f'Внутри функции handle_message // Команда /connect // state - {self.state.value}')
self.connect_with_admin(message)
self.state = State.PRE_CHAT
print(f'В state.START - {self.state.value}')
elif message.text == '👋🏼Сказать пока!':
print(f'Внутри функции handle_message // Команда /end // state - {self.state.value}')
self.end_message(message)
self.state = State.START
elif message.text == 'Выйти из чата':
print(f'Внутри функции handle_message // Команда /end // state - {self.state.value}')
self.end_message(message)
elif message.text == '/admin':
self.state = State.ADMIN
#TODO: Админку сделать!
self.bot.send_message(message.chat.id,
"Ты в админке, Ура! Делай что хочешь")
elif message.text == '/state':
print(f'Внутри функции handle_message // Команда /state // state - {self.state.value}')
self.bot.send_message(message.chat.id,
f'Твой state == {self.state.value}')
else:
self.bot.send_message(message.chat.id,
"Не понимаю где ты находишься. Нажми /state, и я расскажу что ты можешь "
"сделать")
if self.state == State.SUGGEST:
self.bot.register_next_step_handler(message, self.resend_message_in_group_for_post)
self.state = State.START
elif self.state == State.PRE_CHAT:
self.bot.register_next_step_handler(message, self.resend_message_in_group_for_message)
self.state = State.START
if self.state == State.CHAT:
print(f'В state.CHAT - {self.state.value}')
if message.text == 'Выйти из чата':
self.state = State.START
self.end_message(message)
print(f'Обработчик в CHAT - {self.state.value}')
else:
print(f'Обработчик чата в чате CHAT - {self.state.value}')
self.resend_message_in_group_for_message(message)
@self.bot.message_handler(func=lambda message: True, chat_types=['group'])
def handle_message(message):
"""Функция ответа админа пользователю через закрытый чат"""
self.state = State.CHAT
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
item1 = types.KeyboardButton("Забанить пользователя из списка")
item2 = types.KeyboardButton("Забанить пользователя по ID")
markup.add(item1, item2)
bot.send_message(message.chat.id,"Добро пожаловать в админку. Выбери что хочешь:", reply_markup=markup)
bot.register_next_step_handler(message, ban_user)
except Exception as e:
bot.register_next_step_handler(message, admin_panel)
item1 = types.KeyboardButton("Выйти из чата")
markup.add(item1)
message_id = message.reply_to_message.id
message_from_admin = message.text
chat_id = BotDB.get_user_by_message_id(message_id)
self.bot.send_message(chat_id, message_from_admin, reply_markup=markup)
def register_chat_handler(self, message):
self.bot.register_next_step_handler(message, self.resend_message_in_group_for_message)
def ban_user(message):
# проверяем, что ID передан правильно
#TODO: остановился где-то тут, функция не дописана. Хотел сделать админку + бан пользователей
try:
if message.text == "Забанить пользователя из списка":
pass
elif message.text == "Забанить пользователя по ID":
bot.send_message(message.chat.id, "Пришли ID юзера")
BotDB.set_user_blacklist(ban_user_id)
bot.reply_to(message, f"Пользователь {ban_user_id} заблокирован.")
except Exception as e:
bot.reply_to(message, f"Укажи ID пользователя. Ошибка\n\n {e}")
bot.register_next_step_handler(message, ban_user)
def start(self):
while True:
try:
self.bot.polling(none_stop=True)
except (ConnectionError, Exception):
print(f"Произошла ошибка: {str(Exception)}\n\nTraceback:\n{traceback.format_exc()}")
@bot.message_handler(commands=['start'])
def send_welcome(message):
# TODO: Тексты приветствий вынести в отдельный файл
def start_message(self, message):
try:
name_stick_hello = list(Path('Stick').rglob('Hello_*'))
number_stick_hello = random.randint(1, len(name_stick_hello))
random_stick_hello = open(name_stick_hello[number_stick_hello], 'rb')
random_stick_hello = open(random.choice(name_stick_hello), 'rb')
# logging
if LOGS:
bot.forward_message(chat_id=GROUP_FOR_LOGS,
from_chat_id=message.chat.id,
message_id=message.message_id)
bot.send_sticker(message.chat.id, random_stick_hello)
self.bot.forward_message(chat_id=GROUP_FOR_LOGS,
from_chat_id=message.chat.id,
message_id=message.message_id)
self.bot.send_sticker(message.chat.id, random_stick_hello)
sleep(0.3)
except Exception as e:
print(f'{str(e)}')
if LOGS:
bot.send_message(IMPORTANT_LOGS, f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
self.bot.send_message(IMPORTANT_LOGS,
f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
try:
user_id = message.from_user.id
first_name = message.from_user.first_name
@@ -92,161 +155,103 @@ def telegram_bot():
is_bot = message.from_user.is_bot
username = message.from_user.username
language_code = message.from_user.language_code
time_utc = int(time.time())
date_added = datetime.fromtimestamp(time_utc)
date_changed = datetime.fromtimestamp(time_utc)
date_added = datetime.now()
date_changed = date_added
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
item1 = types.KeyboardButton("📢Предложить свой пост")
item2 = types.KeyboardButton("📩Связаться с админами")
# TODO: Выпилил, удалить
# item3 = types.KeyboardButton("❌Удалить пост")
if BotDB.user_exists(user_id):
is_need_sticker = BotDB.get_info_about_stickers(user_id=message.from_user.id)
if is_need_sticker == 0:
item5 = types.KeyboardButton("🤪Хочу стикеры")
BotDB.update_info_about_stickers(user_id=message.from_user.id)
markup.add(item1, item2, item5)
else:
markup.add(item1, item2)
else:
if not BotDB.user_exists(user_id):
BotDB.add_new_user_in_db(user_id, first_name, full_name, username, is_bot, language_code, date_added,
date_changed)
is_need_sticker = BotDB.get_info_about_stickers(user_id=message.from_user.id)
if is_need_sticker == 0:
item5 = types.KeyboardButton("🤪Хочу стикеры")
BotDB.update_info_about_stickers(user_id=message.from_user.id)
markup.add(item1, item2, item5)
else:
markup.add(item1, item2)
hello_message = messages.get_message(__get_first_name(message), 'HELLO_MESSAGE')
bot.send_message(message.chat.id, hello_message, parse_mode='html', reply_markup=markup,
disable_web_page_preview=not PREVIEW_LINK)
markup = self.get_reply_keyboard(message)
hello_message = messages.get_message(self.__get_first_name(message), 'HELLO_MESSAGE')
self.bot.send_message(message.chat.id, hello_message, parse_mode='html', reply_markup=markup,
disable_web_page_preview=not PREVIEW_LINK)
except Exception as e:
print(f'{str(e)}')
if LOGS:
self.bot.send_message(IMPORTANT_LOGS,
f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
#TODO: При отправке более одного сообщения, не пересылает сообщение в чат, БАГ!!!!
def resend_message_in_group_for_message(self, message):
self.bot.forward_message(chat_id=GROUP_FOR_MESSAGE,
from_chat_id=message.chat.id,
message_id=message.message_id
)
print(f'Кладу в базу: {message.message_id}')
BotDB.add_new_message_in_db(message.text, message.message_id + 1, message.from_user.id, datetime.now(), 0)
question = messages.get_message(self.__get_first_name(message), 'QUESTION')
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
item1 = types.KeyboardButton("Выйти из чата")
markup.add(item1)
self.bot.send_message(message.chat.id, question, parse_mode='html', disable_web_page_preview=not PREVIEW_LINK,
reply_markup=markup)
def suggest_post(self, message):
try:
markup = types.ReplyKeyboardRemove()
suggest_news = messages.get_message(self.__get_first_name(message), 'SUGGEST_NEWS')
self.bot.send_message(message.chat.id, suggest_news, parse_mode='html')
sleep(0.3)
suggest_news_2 = messages.get_message(self.__get_first_name(message), 'SUGGEST_NEWS_2')
self.bot.send_message(message.chat.id, suggest_news_2, parse_mode='html', reply_markup=markup)
except Exception as e:
if LOGS:
bot.send_message(IMPORTANT_LOGS, f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
bot.register_next_step_handler(message, go_send_messages)
@bot.message_handler(commands=['end_command'])
def after_post(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
item1 = types.KeyboardButton("📢Предложить свой пост")
item2 = types.KeyboardButton("📩Связаться с админами")
# TODO: Скрыл, удалить обработчик
# item3 = types.KeyboardButton("❌Удалить пост")
item5 = types.KeyboardButton("👋🏼Сказать пока!")
markup.add(item1, item2, item5)
bot.send_message(message.chat.id,
"Выбери нужную кнопку внизу экрана".format(
message.from_user, bot.get_me()),
parse_mode='html', reply_markup=markup, disable_web_page_preview=not PREVIEW_LINK)
bot.register_next_step_handler(message, go_send_messages)
def go_send_messages(message):
global msg
if message.text == '📢Предложить свой пост':
try:
markup = types.ReplyKeyboardRemove()
suggest_news = messages.get_message(__get_first_name(message), 'SUGGEST_NEWS')
bot.send_message(message.chat.id, suggest_news, parse_mode='html')
sleep(0.3)
suggest_news_2 = messages.get_message(__get_first_name(message), 'SUGGEST_NEWS_2')
msg = bot.send_message(message.chat.id, suggest_news_2, parse_mode='html', reply_markup=markup)
except Exception as e:
if LOGS:
bot.send_message(IMPORTANT_LOGS,
f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
# logging
if LOGS:
bot.forward_message(chat_id=GROUP_FOR_LOGS,
from_chat_id=message.chat.id,
message_id=message.message_id)
bot.register_next_step_handler(msg, resend_message_in_group_for_post)
elif message.text == "📩Связаться с админами":
connect_with_admin = messages.get_message(__get_first_name(message), 'CONNECT_WITH_ADMIN')
msg = bot.send_message(message.chat.id, connect_with_admin, parse_mode="html")
self.bot.send_message(IMPORTANT_LOGS,
f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
# logging
if LOGS:
bot.forward_message(chat_id=GROUP_FOR_LOGS,
from_chat_id=message.chat.id,
message_id=message.message_id)
bot.register_next_step_handler(msg, resend_message_in_group_for_message)
if LOGS:
self.bot.forward_message(chat_id=GROUP_FOR_LOGS,
from_chat_id=message.chat.id,
message_id=message.message_id)
elif message.text == "❌Удалить пост":
# TODO: требует автоматизации. На входе говорим пришли мне пост, на выходе получаем идентификатор поста, удаляем из ТГ. Насчет удаления из ВК надо подумать
del_message = messages.get_message(__get_first_name(message), 'DEL_MESSAGE')
msg = bot.send_message(message.chat.id, del_message, parse_mode="html")
def stickers(self, message):
BotDB.update_info_about_stickers(user_id=message.from_user.id)
markup = self.get_reply_keyboard(message)
try:
self.bot.forward_message(chat_id=GROUP_FOR_LOGS,
from_chat_id=message.chat.id,
message_id=message.message_id)
self.bot.send_message(message.chat.id,
text='Хорошо, лови, добавить можно отсюда: https://t.me/addstickers/love_biysk',
reply_markup=markup)
except ApiTelegramException as e:
self.bot.send_message(chat_id=IMPORTANT_LOGS,
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
def connect_with_admin(self, message):
connect_with_admin = messages.get_message(self.__get_first_name(message), 'CONNECT_WITH_ADMIN')
self.bot.send_message(message.chat.id, connect_with_admin, parse_mode="html")
# logging
if LOGS:
self.bot.forward_message(chat_id=GROUP_FOR_LOGS,
from_chat_id=message.chat.id,
message_id=message.message_id)
def end_message(self, message):
try:
name_stick_bye = list(Path('Stick').rglob('Universal_*'))
random_stick_bye = open(random.choice(name_stick_bye), 'rb')
self.bot.send_sticker(message.chat.id, random_stick_bye)
except ApiTelegramException as e:
if LOGS:
self.bot.send_message(chat_id=IMPORTANT_LOGS,
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
markup = types.ReplyKeyboardRemove()
try:
bye_message = messages.get_message(self.__get_first_name(message), 'BYE_MESSAGE')
self.bot.send_message(message.chat.id, bye_message,
parse_mode='html', reply_markup=markup, disable_web_page_preview=not PREVIEW_LINK)
except Exception as e:
if LOGS:
self.bot.send_message(chat_id=IMPORTANT_LOGS,
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
if LOGS:
# logging
if LOGS:
bot.forward_message(chat_id=GROUP_FOR_LOGS,
from_chat_id=message.chat.id,
message_id=message.message_id)
bot.register_next_step_handler(msg, resend_message_in_group_for_message)
self.bot.forward_message(chat_id=GROUP_FOR_LOGS,
from_chat_id=message.chat.id,
message_id=message.message_id)
elif message.text == "👋🏼Сказать пока!":
try:
name_stick_bye = list(Path('Stick').rglob('Universal_*'))
number_stick_bye = random.randint(1, len(name_stick_bye))
random_stick_bye = open(name_stick_bye[number_stick_bye], 'rb')
bot.send_sticker(message.chat.id, random_stick_bye)
except ApiTelegramException as e:
if LOGS:
bot.send_message(chat_id=IMPORTANT_LOGS,
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
markup = types.ReplyKeyboardRemove()
try:
bye_message = messages.get_message(__get_first_name(message), 'BYE_MESSAGE')
bot.send_message(message.chat.id, bye_message,
parse_mode='html', reply_markup=markup, disable_web_page_preview=not PREVIEW_LINK)
except Exception as e:
if LOGS:
bot.send_message(chat_id=IMPORTANT_LOGS,
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
if LOGS:
# logging
bot.forward_message(chat_id=GROUP_FOR_LOGS,
from_chat_id=message.chat.id,
message_id=message.message_id)
elif message.text == "🤪Хочу стикеры":
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
item1 = types.KeyboardButton("📢Предложить свой пост")
item2 = types.KeyboardButton("📩Связаться с админами")
# TODO: Скрыл кнопку, убрать обработчик позднее
# item3 = types.KeyboardButton("❌Удалить пост")
item5 = types.KeyboardButton("👋🏼Сказать пока!")
markup.add(item1, item2, item5)
try:
if LOGS:
bot.forward_message(chat_id=GROUP_FOR_LOGS,
from_chat_id=message.chat.id,
message_id=message.message_id)
bot.send_message(message.chat.id,
text='Хорошо, лови, добавить можно отсюда: https://t.me/addstickers/love_biysk',
reply_markup=markup)
bot.register_next_step_handler(message, callback=go_send_messages)
except ApiTelegramException as e:
if LOGS:
bot.send_message(chat_id=IMPORTANT_LOGS,
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
else:
try:
user_error = messages.get_message(__get_first_name(message), 'USER_ERROR')
bot.send_message(message.chat.id, user_error, parse_mode='html',
disable_web_page_preview=not PREVIEW_LINK)
except Exception as e:
if LOGS:
bot.send_message(chat_id=IMPORTANT_LOGS,
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
# logging
if LOGS:
bot.forward_message(chat_id=GROUP_FOR_LOGS,
from_chat_id=message.chat.id,
message_id=message.message_id)
bot.register_next_step_handler(message, callback=go_send_messages)
def resend_message_in_group_for_post(message):
def resend_message_in_group_for_post(self, message):
markup = types.InlineKeyboardMarkup(row_width=1)
item1 = types.InlineKeyboardButton("Опубликовать", callback_data='post_post_post')
item2 = types.InlineKeyboardButton("Отклонить", callback_data='decline')
@@ -255,21 +260,21 @@ def telegram_bot():
if message.content_type == 'text':
post_text = message.text.lower()
if post_text.find('неанон') != -1 or post_text.find('не анон') != -1:
bot.send_message(
self.bot.send_message(
# TODO: GROUP_FOR_POST
chat_id=GROUP_FOR_POST,
text=f'Пост из ТГ:\n{post_text}\n\nАвтор поста: {message.from_user.first_name} @{message.from_user.username}',
reply_markup=markup
)
elif post_text.find('анон') != -1:
bot.send_message(
self.bot.send_message(
# TODO: GROUP_FOR_POST
chat_id=GROUP_FOR_POST,
text=f'Пост из ТГ:\n{message.text}\n\nПост опубликован анонимно',
reply_markup=markup
)
else:
bot.send_message(
self.bot.send_message(
# TODO: GROUP_FOR_POST
chat_id=GROUP_FOR_POST,
text=f'Пост из ТГ:\n{post_text}\n\nАвтор поста: {message.from_user.first_name} @{message.from_user.username}',
@@ -278,7 +283,7 @@ def telegram_bot():
elif message.content_type == 'photo' and message.media_group_id is None:
post_text_for_photo = message.caption.lower()
if post_text_for_photo.find('неанон') != -1 or post_text_for_photo.find('не анон') != -1:
bot.send_photo(
self.bot.send_photo(
# TODO: GROUP_FOR_POST
chat_id=GROUP_FOR_POST,
caption=f'Пост из ТГ:\n{post_text_for_photo}\n\nАвтор поста: {message.from_user.first_name} @{message.from_user.username}',
@@ -286,7 +291,7 @@ def telegram_bot():
reply_markup=markup
)
elif post_text_for_photo.find('анон') != -1 or post_text_for_photo.find('анон') != -1:
bot.send_photo(
self.bot.send_photo(
# TODO: GROUP_FOR_POST
chat_id=GROUP_FOR_POST,
caption=f'Пост из ТГ:\n{post_text_for_photo}\n\nПост опубликован анонимно',
@@ -294,7 +299,7 @@ def telegram_bot():
reply_markup=markup
)
else:
bot.send_photo(
self.bot.send_photo(
# TODO: GROUP_FOR_POST
chat_id=GROUP_FOR_POST,
caption=f'Пост из ТГ:\n{post_text_for_photo}\n\nАвтор поста: {message.from_user.first_name} @{message.from_user.username}',
@@ -308,29 +313,67 @@ def telegram_bot():
pass
except Exception as e:
if LOGS:
bot.send_message(chat_id=IMPORTANT_LOGS,
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
self.bot.send_message(chat_id=IMPORTANT_LOGS,
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
markup_for_user = self.get_reply_keyboard(message)
success_send_message = messages.get_message(self.__get_first_name(message), 'SUCCESS_SEND_MESSAGE')
self.bot.send_message(message.chat.id, success_send_message, parse_mode='html',
disable_web_page_preview=not PREVIEW_LINK, reply_markup=markup_for_user)
success_send_message = messages.get_message(__get_first_name(message), 'SUCCESS_SEND_MESSAGE')
@staticmethod
def get_reply_keyboard(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
item1 = types.KeyboardButton("📢Предложить свой пост")
item2 = types.KeyboardButton("📩Связаться с админами")
item3 = types.KeyboardButton("👋🏼Сказать пока!")
#TODO: Есть ощущение что не совсем так работает как надо
item4 = types.KeyboardButton("🤪Хочу стикеры") if not BotDB.get_info_about_stickers(
user_id=message.from_user.id) else None
bot.send_message(message.chat.id, success_send_message, parse_mode='html',
disable_web_page_preview=not PREVIEW_LINK)
after_post(message=message)
if item4:
markup.add(item1, item2, item3, item4)
else:
markup.add(item1, item2, item3)
def resend_message_in_group_for_message(message):
bot.forward_message(chat_id=GROUP_FOR_MESSAGE,
from_chat_id=message.chat.id,
message_id=message.message_id
)
question = messages.get_message(__get_first_name(message), 'QUESTION')
bot.send_message(message.chat.id, question, parse_mode='html', disable_web_page_preview=not PREVIEW_LINK)
return markup
@staticmethod
def __get_first_name(message):
return message.from_user.first_name
bot = TelegramHelperBot(BOT_TOKEN)
def telegram_bot():
# Черный список
@bot.message_handler(commands=['admin'], user_id=842766148)
def admin_panel(message):
try:
pass
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
item1 = types.KeyboardButton("Забанить пользователя из списка")
item2 = types.KeyboardButton("Забанить пользователя по ID")
markup.add(item1, item2)
bot.send_message(message.chat.id, "Добро пожаловать в админку. Выбери что хочешь:", reply_markup=markup)
bot.register_next_step_handler(message, ban_user)
except Exception as e:
if LOGS:
bot.send_message(chat_id=IMPORTANT_LOGS,
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
after_post(message=message)
bot.register_next_step_handler(message, admin_panel)
def ban_user(message):
# проверяем, что ID передан правильно
#TODO: остановился где-то тут, функция не дописана. Хотел сделать админку + бан пользователей
try:
if message.text == "Забанить пользователя из списка":
pass
elif message.text == "Забанить пользователя по ID":
bot.send_message(message.chat.id, "Пришли ID юзера")
#BotDB.set_user_blacklist(ban_user_id)
#bot.reply_to(message, f"Пользователь {ban_user_id} заблокирован.")
except Exception as e:
bot.reply_to(message, f"Укажи ID пользователя. Ошибка\n\n {e}")
bot.register_next_step_handler(message, ban_user)
# Админка
@bot.callback_query_handler(func=lambda call: True)
@@ -367,12 +410,6 @@ def telegram_bot():
return message.from_user.first_name
if __name__ == '__main__':
telegram_bot()
while True:
try:
bot.polling(none_stop=True)
bot.enable_save_next_step_handlers(delay=2)
bot.load_next_step_handlers()
except (ConnectionError, Exception):
print(f"Произошла ошибка: {str(Exception)}\n\nTraceback:\n{traceback.format_exc()}")
if __name__ == "__main__":
# Запускаем бота
bot.start()