some refactoring, add all function from old bot
This commit is contained in:
7
db.py
7
db.py
@@ -287,6 +287,13 @@ class BotDB:
|
||||
except sqlite3.Error as error:
|
||||
print(error)
|
||||
|
||||
def update_date_for_user(self, date, user_id: int):
|
||||
try:
|
||||
result = self.cursor.execute("UPDATE `our_users` SET `date_changed` = ? WHERE `user_id` = ?", (date, user_id,))
|
||||
return self.conn.commit()
|
||||
except sqlite3.Error as error:
|
||||
print(error)
|
||||
|
||||
def get_user_by_message_id(self, message_id):
|
||||
"""Возвращает идентификатор пользователя по идентификатору сообщения"""
|
||||
try:
|
||||
|
||||
140
main.py
140
main.py
@@ -83,6 +83,7 @@ class TelegramHelperBot:
|
||||
#TODO: Админку сделать!
|
||||
self.bot.send_message(message.chat.id,
|
||||
"Ты в админке, Ура! Делай что хочешь")
|
||||
self.admin_panel(message)
|
||||
elif message.text == '/state':
|
||||
print(f'Внутри функции handle_message // Команда /state // state - {self.state.value}')
|
||||
self.bot.send_message(message.chat.id,
|
||||
@@ -121,6 +122,37 @@ class TelegramHelperBot:
|
||||
chat_id = BotDB.get_user_by_message_id(message_id)
|
||||
self.bot.send_message(chat_id, message_from_admin, reply_markup=markup)
|
||||
|
||||
# Админка
|
||||
@self.bot.callback_query_handler(func=lambda call: True)
|
||||
def post_for_group(call):
|
||||
if call.data == 'publish' and call.message.content_type == 'text':
|
||||
try:
|
||||
self.bot.send_message(chat_id=MAIN_PUBLIC, text=call.message.text)
|
||||
self.bot.delete_message(chat_id=GROUP_FOR_POST, message_id=call.message.message_id)
|
||||
except Exception as e:
|
||||
if LOGS:
|
||||
self.bot.send_message(chat_id=IMPORTANT_LOGS,
|
||||
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
|
||||
elif call.data == 'publish' and call.message.content_type == 'photo':
|
||||
try:
|
||||
self.bot.send_photo(
|
||||
chat_id=MAIN_PUBLIC,
|
||||
caption=call.message.caption,
|
||||
photo=call.message.photo[-1].file_id,
|
||||
)
|
||||
self.bot.delete_message(chat_id=GROUP_FOR_POST, message_id=call.message.message_id)
|
||||
except Exception as e:
|
||||
if LOGS:
|
||||
self.bot.send_message(chat_id=IMPORTANT_LOGS,
|
||||
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
|
||||
elif call.data == 'decline':
|
||||
try:
|
||||
self.bot.delete_message(chat_id=GROUP_FOR_POST, message_id=call.message.message_id)
|
||||
except Exception as e:
|
||||
if LOGS:
|
||||
self.bot.send_message(IMPORTANT_LOGS,
|
||||
f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
|
||||
|
||||
def register_chat_handler(self, message):
|
||||
self.bot.register_next_step_handler(message, self.resend_message_in_group_for_message)
|
||||
|
||||
@@ -131,6 +163,33 @@ class TelegramHelperBot:
|
||||
except (ConnectionError, Exception):
|
||||
print(f"Произошла ошибка: {str(Exception)}\n\nTraceback:\n{traceback.format_exc()}")
|
||||
|
||||
# Черный список
|
||||
def admin_panel(self, message):
|
||||
try:
|
||||
#Добавить админа: 842766148
|
||||
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
|
||||
item1 = types.KeyboardButton("Забанить пользователя из списка")
|
||||
item2 = types.KeyboardButton("Забанить пользователя по ID")
|
||||
markup.add(item1, item2)
|
||||
self.bot.send_message(message.chat.id, "Добро пожаловать в админку. Выбери что хочешь:", reply_markup=markup)
|
||||
self.bot.register_next_step_handler(message, self.ban_user)
|
||||
except Exception as e:
|
||||
self.bot.register_next_step_handler(message, self.admin_panel)
|
||||
|
||||
def ban_user(self, message):
|
||||
# проверяем, что ID передан правильно
|
||||
#TODO: остановился где-то тут, функция не дописана. Хотел сделать админку + бан пользователей
|
||||
try:
|
||||
if message.text == "Забанить пользователя из списка":
|
||||
pass
|
||||
elif message.text == "Забанить пользователя по ID":
|
||||
self.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:
|
||||
self.bot.reply_to(message, f"Укажи ID пользователя. Ошибка\n\n {e}")
|
||||
self.bot.register_next_step_handler(message, self.ban_user)
|
||||
|
||||
def start_message(self, message):
|
||||
try:
|
||||
name_stick_hello = list(Path('Stick').rglob('Hello_*'))
|
||||
@@ -155,12 +214,12 @@ class TelegramHelperBot:
|
||||
is_bot = message.from_user.is_bot
|
||||
username = message.from_user.username
|
||||
language_code = message.from_user.language_code
|
||||
date_added = datetime.now()
|
||||
date_changed = date_added
|
||||
|
||||
current_date = datetime.now()
|
||||
date = current_date.strftime("%Y-%m-%d %H:%M:%S")
|
||||
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)
|
||||
BotDB.add_new_user_in_db(user_id, first_name, full_name, username, is_bot, language_code, date,
|
||||
date)
|
||||
BotDB.update_date_for_user(date, user_id)
|
||||
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,
|
||||
@@ -177,8 +236,9 @@ class TelegramHelperBot:
|
||||
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)
|
||||
current_date = datetime.now()
|
||||
date = current_date.strftime("%Y-%m-%d %H:%M:%S")
|
||||
BotDB.add_new_message_in_db(message.text, message.message_id + 1, message.from_user.id, date, 0)
|
||||
question = messages.get_message(self.__get_first_name(message), 'QUESTION')
|
||||
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
|
||||
item1 = types.KeyboardButton("Выйти из чата")
|
||||
@@ -253,7 +313,7 @@ class TelegramHelperBot:
|
||||
|
||||
def resend_message_in_group_for_post(self, message):
|
||||
markup = types.InlineKeyboardMarkup(row_width=1)
|
||||
item1 = types.InlineKeyboardButton("Опубликовать", callback_data='post_post_post')
|
||||
item1 = types.InlineKeyboardButton("Опубликовать", callback_data='publish')
|
||||
item2 = types.InlineKeyboardButton("Отклонить", callback_data='decline')
|
||||
markup.add(item1, item2)
|
||||
try:
|
||||
@@ -345,70 +405,6 @@ class TelegramHelperBot:
|
||||
bot = TelegramHelperBot(BOT_TOKEN)
|
||||
|
||||
|
||||
def telegram_bot():
|
||||
# Черный список
|
||||
|
||||
@bot.message_handler(commands=['admin'], user_id=842766148)
|
||||
def admin_panel(message):
|
||||
try:
|
||||
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)
|
||||
|
||||
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)
|
||||
def post_for_group(call):
|
||||
if call.data == 'post_post_post' and call.message.content_type == 'text':
|
||||
try:
|
||||
bot.send_message(chat_id=MAIN_PUBLIC, text=call.message.text)
|
||||
bot.delete_message(chat_id=GROUP_FOR_POST, message_id=call.message.message_id)
|
||||
except Exception as e:
|
||||
if LOGS:
|
||||
bot.send_message(chat_id=IMPORTANT_LOGS,
|
||||
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
|
||||
elif call.data == 'post_post_post' and call.message.content_type == 'photo':
|
||||
try:
|
||||
bot.send_photo(
|
||||
chat_id=MAIN_PUBLIC,
|
||||
caption=call.message.caption,
|
||||
photo=call.message.photo[-1].file_id,
|
||||
)
|
||||
bot.delete_message(chat_id=GROUP_FOR_POST, message_id=call.message.message_id)
|
||||
except Exception as e:
|
||||
if LOGS:
|
||||
bot.send_message(chat_id=IMPORTANT_LOGS,
|
||||
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
|
||||
elif call.data == 'decline':
|
||||
try:
|
||||
bot.delete_message(chat_id=GROUP_FOR_POST, message_id=call.message.message_id)
|
||||
except Exception as e:
|
||||
if LOGS:
|
||||
bot.send_message(IMPORTANT_LOGS,
|
||||
f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
|
||||
|
||||
def __get_first_name(message):
|
||||
return message.from_user.first_name
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Запускаем бота
|
||||
|
||||
Reference in New Issue
Block a user