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:
|
except sqlite3.Error as error:
|
||||||
print(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):
|
def get_user_by_message_id(self, message_id):
|
||||||
"""Возвращает идентификатор пользователя по идентификатору сообщения"""
|
"""Возвращает идентификатор пользователя по идентификатору сообщения"""
|
||||||
try:
|
try:
|
||||||
|
|||||||
140
main.py
140
main.py
@@ -83,6 +83,7 @@ class TelegramHelperBot:
|
|||||||
#TODO: Админку сделать!
|
#TODO: Админку сделать!
|
||||||
self.bot.send_message(message.chat.id,
|
self.bot.send_message(message.chat.id,
|
||||||
"Ты в админке, Ура! Делай что хочешь")
|
"Ты в админке, Ура! Делай что хочешь")
|
||||||
|
self.admin_panel(message)
|
||||||
elif message.text == '/state':
|
elif message.text == '/state':
|
||||||
print(f'Внутри функции handle_message // Команда /state // state - {self.state.value}')
|
print(f'Внутри функции handle_message // Команда /state // state - {self.state.value}')
|
||||||
self.bot.send_message(message.chat.id,
|
self.bot.send_message(message.chat.id,
|
||||||
@@ -121,6 +122,37 @@ class TelegramHelperBot:
|
|||||||
chat_id = BotDB.get_user_by_message_id(message_id)
|
chat_id = BotDB.get_user_by_message_id(message_id)
|
||||||
self.bot.send_message(chat_id, message_from_admin, reply_markup=markup)
|
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):
|
def register_chat_handler(self, message):
|
||||||
self.bot.register_next_step_handler(message, self.resend_message_in_group_for_message)
|
self.bot.register_next_step_handler(message, self.resend_message_in_group_for_message)
|
||||||
|
|
||||||
@@ -131,6 +163,33 @@ class TelegramHelperBot:
|
|||||||
except (ConnectionError, Exception):
|
except (ConnectionError, Exception):
|
||||||
print(f"Произошла ошибка: {str(Exception)}\n\nTraceback:\n{traceback.format_exc()}")
|
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):
|
def start_message(self, message):
|
||||||
try:
|
try:
|
||||||
name_stick_hello = list(Path('Stick').rglob('Hello_*'))
|
name_stick_hello = list(Path('Stick').rglob('Hello_*'))
|
||||||
@@ -155,12 +214,12 @@ class TelegramHelperBot:
|
|||||||
is_bot = message.from_user.is_bot
|
is_bot = message.from_user.is_bot
|
||||||
username = message.from_user.username
|
username = message.from_user.username
|
||||||
language_code = message.from_user.language_code
|
language_code = message.from_user.language_code
|
||||||
date_added = datetime.now()
|
current_date = datetime.now()
|
||||||
date_changed = date_added
|
date = current_date.strftime("%Y-%m-%d %H:%M:%S")
|
||||||
|
|
||||||
if not BotDB.user_exists(user_id):
|
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,
|
BotDB.add_new_user_in_db(user_id, first_name, full_name, username, is_bot, language_code, date,
|
||||||
date_changed)
|
date)
|
||||||
|
BotDB.update_date_for_user(date, user_id)
|
||||||
markup = self.get_reply_keyboard(message)
|
markup = self.get_reply_keyboard(message)
|
||||||
hello_message = messages.get_message(self.__get_first_name(message), 'HELLO_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,
|
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,
|
from_chat_id=message.chat.id,
|
||||||
message_id=message.message_id
|
message_id=message.message_id
|
||||||
)
|
)
|
||||||
print(f'Кладу в базу: {message.message_id}')
|
current_date = datetime.now()
|
||||||
BotDB.add_new_message_in_db(message.text, message.message_id + 1, message.from_user.id, datetime.now(), 0)
|
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')
|
question = messages.get_message(self.__get_first_name(message), 'QUESTION')
|
||||||
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
|
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
|
||||||
item1 = types.KeyboardButton("Выйти из чата")
|
item1 = types.KeyboardButton("Выйти из чата")
|
||||||
@@ -253,7 +313,7 @@ class TelegramHelperBot:
|
|||||||
|
|
||||||
def resend_message_in_group_for_post(self, message):
|
def resend_message_in_group_for_post(self, message):
|
||||||
markup = types.InlineKeyboardMarkup(row_width=1)
|
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')
|
item2 = types.InlineKeyboardButton("Отклонить", callback_data='decline')
|
||||||
markup.add(item1, item2)
|
markup.add(item1, item2)
|
||||||
try:
|
try:
|
||||||
@@ -345,70 +405,6 @@ class TelegramHelperBot:
|
|||||||
bot = TelegramHelperBot(BOT_TOKEN)
|
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__":
|
if __name__ == "__main__":
|
||||||
# Запускаем бота
|
# Запускаем бота
|
||||||
|
|||||||
Reference in New Issue
Block a user