from telegram import InlineKeyboardButton, InlineKeyboardMarkup, Update, Bot from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackQueryHandler from credits import bot_token import datetime def remove_job_if_exists(name, context): current_jobs = context.job_queue.get_jobs_by_name(name) if not current_jobs: return False for job in current_jobs: job.schedule_removal() return True def get_data_from_file(day): f = open(day, "r") data = f.read() f.close() return data def remind_alarm(context): job = context.job context.bot.send_message(job.context, text = "Напоминалка!!!!") def set_reminder(update, context): due = int(context.args[0]) if due < 0: context.bot.send_message(update.effective_chat.id, "Нельзя установить отрицательное значение таймера") return context.job_queue.run_once(remind_alarm, due, context=update.effective_chat.id, name=str(update.effective_chat.id)) context.bot.send_message(update.effective_chat.id, "Напоминалка Создана!!!!") def set_timer(update, context): keyboard = [[InlineKeyboardButton("10 секунд", callback_data = 10)], [InlineKeyboardButton("30 секунд", callback_data = 30)], [InlineKeyboardButton("1 минута", callback_data = 60)]] update.message.reply_text('Выбери время', reply_markup=InlineKeyboardMarkup(keyboard)) def timer_alarm(context): job = context.job context.bot.send_message(job.context, text = "Таймер закончился!") def button(update, context): query = update.callback_query query.answer() due = int(query.data) if due < 0: context.bot.send_message(update.effective_chat.id, "Нельзя установить отрицательное значение таймера") return context.job_queue.run_once(timer_alarm, due, context=update.effective_chat.id, name=str(update.effective_chat.id)) context.bot.send_message(update.effective_chat.id, "Таймер запущен!") def unset(update, context): chat_id = update.message.chat_id job_removed = remove_job_if_exists(str(chat_id), context) if job_removed: update.message.reply_text("Таймер отменён!") else: update.message.reply_text("Нет активных таймеров") def write_note(update, context): current_date_time = datetime.datetime.now() current_time = current_date_time.time() if str(update.message.from_user["usrname"]) == "Имя_пользователя": wall = open("notes.txt", "a") result = "" for arg in context.args: result += arg + " " wall.write(str(current_time) + ": " + result + "\n") wall.close() else: return def show_note(update, context): if str(update.message.from_user["usrname"]) == "Имя_пользователя": context.bot.send_message(update.effective_chat.id, get_data_from_file("notes.txt")) else: return bot = Bot(token=bot_token) updater = Updater(token=bot_token, use_context=True) dispatcher = updater.dispatcher set_timer_handler = CommandHandler('settimer', set_timer) dispatcher.add_handler(set_timer_handler) write_note_handler = CommandHandler('writenote', write_note) dispatcher.add_handler(write_note_handler) show_note_handler = CommandHandler('shownote', show_note) dispatcher.add_handler(show_note_handler) set_reminder_handler = CommandHandler('setreminder', set_reminder) dispatcher.add_handler(show_note_handler) unset_reminder_handler = CommandHandler("unset", unset) dispatcher.add_handler(unset_reminder_handler) button_handler = CallbackQueryHandler(button) dispatcher.add_handler(button_handler) updater.start_polling() updater.idle()