small refactor

This commit is contained in:
kr0sh512
2023-11-16 05:21:55 +03:00
parent c4751fd4f1
commit 6f53e4edc8
2 changed files with 132 additions and 100 deletions
+2
View File
@@ -167,6 +167,8 @@ def pause_bot():
def get_schedule(id, day): def get_schedule(id, day):
id = str(id) id = str(id)
if day == 'sun':
day = 'mon'
days = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat'] days = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat']
russian_days = ['понедельник', 'вторник', 'среду', 'четверг', 'пятницу', 'субботу'] russian_days = ['понедельник', 'вторник', 'среду', 'четверг', 'пятницу', 'субботу']
+124 -94
View File
@@ -9,9 +9,36 @@ from admin import admin_command, is_admin, send_admin_message, send_admin_docume
bot = telebot.TeleBot("TOKEN_API") bot = telebot.TeleBot("TOKEN_API")
start_txt = 'Привет! Это бот, который будет кидать тебе сообщения перед нужной парой с номером кабинета/фамилией препода\
\n\nТы можешь настроить отправку сообщений в лс или добавить меня в группу, куда я буду присылать расписание\
\n\nCreated by: @Kr0sH_512' @bot.message_handler(commands=['help', 'faq'])
def help(message):
help_msg = 'Мои команды:\
\n/start - используй, чтобы сменить номер группы.\
\n/schedule - используй, чтобы получить расписание на сегодня.\
\n/info - используй, чтобы узнать твои настройки бота\
\n/pause - используй, чтобы прекратить получать сообщения от бота\
\n/thread - используй в нужном чате канала, чтобы бот отправлял сообщения именно туда\
\n/timeout - настрой время, когда бот будет присылать тебе сообщение\
\n/request - используй, чтобы отправить разработчику какой-то запрос\
\n/source - Страница бота на Github\
\n\nИли же можно всегда написать напрямую: @Kr0sH_512'
send_message(message.chat.id, help_msg)
if is_admin(message):
admin_help_msg = 'И команды только для админа:\
\n/restart - перезапуск бота.\
\n/update - обновление schedule задач\
\n/json - получить файл пользователей и расписания\
\n/info <i>id_пользователя</i> - узнать настройки пользователя\
\n/pause_all - приостановить бота для всех (каникулы/выходные)\
\n/stop <i>id_пользователя</i> - приостановить отправку сообщений для пользователя'
send_admin_message(admin_help_msg)
return
### --//--
@bot.message_handler(commands=['test']) @bot.message_handler(commands=['test'])
@admin_command @admin_command
@@ -27,6 +54,12 @@ def update_schedules(message):
return return
@bot.message_handler(commands=['restart'])
@admin_command
def restart_bot(message):
send_admin_message('bye')
os.execv(sys.executable, ['python'] + sys.argv)
@bot.message_handler(commands=['update']) @bot.message_handler(commands=['update'])
@admin_command @admin_command
def update_schedules(message): def update_schedules(message):
@@ -35,12 +68,6 @@ def update_schedules(message):
return return
@bot.message_handler(commands=['restart'])
@admin_command
def restart_bot(message):
send_admin_message('bye')
os.execv(sys.executable, ['python'] + sys.argv)
@bot.message_handler(commands=['json']) @bot.message_handler(commands=['json'])
@admin_command @admin_command
def send_json(message): def send_json(message):
@@ -51,6 +78,8 @@ def send_json(message):
return return
# info user_id
@bot.message_handler(commands=['pause_all']) @bot.message_handler(commands=['pause_all'])
@admin_command @admin_command
def pause_bot(message): def pause_bot(message):
@@ -69,9 +98,13 @@ def pause_bot(message):
send_admin_message('Успешно') send_admin_message('Успешно')
return return
### --//--
@bot.message_handler(commands=['start']) @bot.message_handler(commands=['start'])
def start(message): def start(message):
start_txt = 'Привет! Это бот, который будет кидать тебе сообщения перед нужной парой с номером кабинета/фамилией препода\
\n\nТы можешь настроить отправку сообщений в лс или добавить меня в группу, куда я буду присылать расписание\
\n\nCreated by: @Kr0sH_512'
if message.chat.type == "supergroup": if message.chat.type == "supergroup":
if len(message.text.split(' ')) != 2: if len(message.text.split(' ')) != 2:
send_message(message.chat.id, start_txt) send_message(message.chat.id, start_txt)
@@ -117,7 +150,6 @@ def start(message):
return return
# @bot.callback_query_handler(func=lambda call: True)
@bot.callback_query_handler(func=lambda call: not(call.data in ['left', 'right'])) @bot.callback_query_handler(func=lambda call: not(call.data in ['left', 'right']))
def callback_inline(call): def callback_inline(call):
infos = [ infos = [
@@ -145,64 +177,7 @@ def callback_inline(call):
return return
@bot.message_handler(commands=['help', 'faq'])
def help(message):
help_msg = 'Мои команды:\
\n/start - используй, чтобы сменить номер группы.\
\n/schedule - используй, чтобы получить расписание на сегодня.\
\n/info - используй, чтобы узнать твои настройки бота\
\n/pause - используй, чтобы прекратить получать сообщения от бота\
\n/thread - используй в нужном чате канала, чтобы бот отправлял сообщения именно туда\
\n/timeout - настрой время, когда бот будет присылать тебе сообщение\
\n/request - используй, чтобы отправить разработчику какой-то запрос\
\n/source - Страница бота на Github\
\n\nИли же можно всегда написать напрямую: @Kr0sH_512'
send_message(message.chat.id, help_msg)
if is_admin(message):
admin_help_msg = 'И команды только для админа:\
\n/restart - перезапуск бота.\
\n/update - обновление schedule задач\
\n/json - получить файл пользователей и расписания\
\n/info <i>id_пользователя</i> - узнать настройки пользователя\
\n/pause_all - приостановить бота для всех (каникулы/выходные)\
\n/stop <i>id_пользователя</i> - приостановить отправку сообщений для пользователя'
send_admin_message(admin_help_msg)
return
@bot.message_handler(commands=['request'])
def request(message):
send_message(message.from_user.id, 'Отправь мне сообщение и я перешлю его разработчику\
\n(или напиши stop, чтобы отменить отправку)')
bot.register_next_step_handler(message, send_request)
return
def send_request(message):
if message.text == "stop" or message.text == "стоп" or message.text[0] == '/':
send_message(message.from_user.id, 'Отмена отпраки')
return
infos = [
message.from_user.id,
message.from_user.first_name,
message.from_user.last_name,
message.from_user.username,
message.text
]
for i in range(len(infos)):
if type(infos[i]) == type(None):
infos[i] = ''
admin_text = 'Сообщение от {} {} (@{}):\n\n{}\nid: {}'.format(infos[1], infos[2], infos[3], infos[4], infos[0])
send_admin_message(admin_text)
send_message(message.from_user.id, 'Ваше сообщение успешно доставлено!')
return
@bot.message_handler(commands=['schedule']) @bot.message_handler(commands=['schedule'])
def send_schedule(message): def send_schedule(message):
@@ -244,26 +219,7 @@ def change_schedule(call):
return return
@bot.message_handler(commands=['timeout'])
def set_timeout(message):
send_message(message.chat.id, 'Пришли мне число от 1 до 60. \
\nЭто будет количество минут, за которое я буду присылать тебе напоминание о уроке (По умолчанию: 10)')
bot.register_next_step_handler(message, save_timeout)
return
def save_timeout(message):
if str(message.text).isdigit() and int(message.text) <= 60 and int(message.text) >= 1:
for_json.change_user_param(message.chat.id, 'timeout', str(message.text))
send_message(message.chat.id,
'Хорошо, теперь ты будешь получать напоминания за {} минут до урока'.format(str(message.text)))
else:
send_message(message.chat.id,
'Пожалуйста, пришли <u>число</u> от 1 до 60. \
\nПо умолчанию: 10')
send_message(message.chat.id, 'Изменения не были внесены')
return
@bot.message_handler(commands=['info']) @bot.message_handler(commands=['info'])
def send_info(message): def send_info(message):
@@ -292,12 +248,24 @@ def send_info(message):
return return
@bot.message_handler(commands=['source'])
def send_source(message):
bot.send_message(message.chat.id, 'https://github.com/kr0sh512/Telegram-bot-schedule', parse_mode=ParseMode.HTML) @bot.message_handler(commands=['pause'])
def pause_schedule(message):
infos = for_json.return_infos(message.chat.id)['allow_message']
if infos == 'yes':
for_json.change_user_param(str(message.chat.id), 'allow_message', 'no')
send_message(message.chat.id, 'Рассылка сообщений преращена. \
\nДля возобновления воспользуйтесь командой\n/pause')
else:
for_json.change_user_param(str(message.chat.id), 'allow_message', 'yes')
send_message(message.chat.id, 'Рассылка сообщений возоблена!')
return return
@bot.message_handler(commands=['thread']) @bot.message_handler(commands=['thread'])
def change_thread(message): def change_thread(message):
thread_id = '' thread_id = ''
@@ -313,15 +281,73 @@ def change_thread(message):
return return
@bot.message_handler(commands=['pause'])
def pause_schedule(message):
for_json.change_user_param(str(message.chat.id), 'allow_message', 'no')
send_message(message.chat.id, 'Рассылка сообщений преращена. \
\nДля возобновления воспользуйтесь командой\n/start') @bot.message_handler(commands=['timeout'])
def set_timeout(message):
send_message(message.chat.id, 'Пришли мне число от 1 до 60. \
\nЭто будет количество минут, за которое я буду присылать тебе напоминание о уроке (По умолчанию: 10)')
bot.register_next_step_handler(message, save_timeout)
return return
def save_timeout(message):
if str(message.text).isdigit() and int(message.text) <= 60 and int(message.text) >= 1:
for_json.change_user_param(message.chat.id, 'timeout', str(message.text))
send_message(message.chat.id,
'Хорошо, теперь ты будешь получать напоминания за {} минут до урока'.format(str(message.text)))
else:
send_message(message.chat.id,
'Пожалуйста, пришли <u>число</u> от 1 до 60. \
\nПо умолчанию: 10')
send_message(message.chat.id, 'Изменения не были внесены')
return
@bot.message_handler(commands=['request'])
def request(message):
send_message(message.from_user.id, 'Отправь мне сообщение и я перешлю его разработчику\
\n(или напиши stop, чтобы отменить отправку)')
bot.register_next_step_handler(message, send_request)
return
def send_request(message):
if message.text == "stop" or message.text == "стоп" or message.text[0] == '/':
send_message(message.from_user.id, 'Отмена отпраки')
return
infos = [
message.from_user.id,
message.from_user.first_name,
message.from_user.last_name,
message.from_user.username,
message.text
]
for i in range(len(infos)):
if type(infos[i]) == type(None):
infos[i] = ''
admin_text = 'Сообщение от {} {} (@{}):\n\n{}\nid: {}'.format(infos[1], infos[2], infos[3], infos[4], infos[0])
send_admin_message(admin_text)
send_message(message.from_user.id, 'Ваше сообщение успешно доставлено!')
return
@bot.message_handler(commands=['source'])
def send_source(message):
bot.send_message(message.chat.id, 'https://github.com/kr0sh512/Telegram-bot-schedule', parse_mode=ParseMode.HTML)
return
@bot.message_handler(content_types=['text']) @bot.message_handler(content_types=['text'])
def text_message(message): def text_message(message):
if message.chat.type == "supergroup": if message.chat.type == "supergroup":
@@ -331,6 +357,8 @@ def text_message(message):
return return
def send_message(id, text, thread_id='General'): def send_message(id, text, thread_id='General'):
if thread_id == 'General': if thread_id == 'General':
thread_id = None thread_id = None
@@ -362,6 +390,8 @@ def send_document(id, file, text = ''):
return return
if __name__ == '__main__': if __name__ == '__main__':
for_json.create_schedule_tasks() for_json.create_schedule_tasks()