def send_photo(bot: TeleBot, bot_state: BotState, message: Message, database: DataBase, ydisk: YandexDisk, is_canceled: bool = False): state_additional = bot_state.get_state(message.from_user.id)["additional"] keyboard = None if is_canceled: keyboard = state_additional["keyboard"]["with_cancel"] else: keyboard = state_additional["keyboard"]["normal"] photo = database.get_random_photos(1) if len(photo) > 0: photo = photo[0] photo_url = ydisk.disk.get_download_link(photo["filepath"]) bot.send_photo(message.chat.id, photo_url, reply_markup=keyboard, caption="https://www.instagram.com/{}".format( photo["source"])) else: bot.send_message( message.chat.id, "Фотографии закончились :(\nВведите /help, остановите эту хреновину." ) bot_state.add_state(message.chat.id, "help") return photo
def echo(bot: TeleBot, bot_state: BotState, message: Message, database: DataBase, ydisk: YandexDisk): state_additional = bot_state.get_state(message.from_user.id)["additional"] last_photo = state_additional["last_photo"] # state_additional["penult_photo"] = if message.text == "Подтвердить": database.set_photo_status(last_photo["hash"], "checked", message.from_user.id) state_additional["penult_photo"] = last_photo state_additional["last_photo"] = send_photo(bot, bot_state, message, database, ydisk, True) elif message.text == "Удалить": database.set_photo_status(last_photo["hash"], "deleted", message.from_user.id) state_additional["penult_photo"] = last_photo state_additional["last_photo"] = send_photo(bot, bot_state, message, database, ydisk, True) elif message.text == "Отменить последнее решение": database.set_photo_status(state_additional["penult_photo"]["hash"], "unchecked", message.from_user.id) send_canceled_photo(state_additional["penult_photo"], bot, bot_state, message, ydisk) state_additional["last_photo"] = state_additional["penult_photo"] else: bot.send_message( message.chat.id, "Введите нормальный ответ или воспользуйтесь другой командой (/help), чтобы отменить действие этой." )
def end(bot: TeleBot, bot_state: BotState, message: Message, database: DataBase, ydisk: YandexDisk): print("{}: ended photo validation".format(message.from_user.username)) state_additional = bot_state.get_state(message.from_user.id)["additional"] state_additional["keyboard"]["normal"] = ReplyKeyboardRemove() state_additional["keyboard"]["with_cancel"] = ReplyKeyboardRemove() bot.send_message(message.chat.id, "Подождите немного. Выполняются изменения...", reply_markup=ReplyKeyboardRemove()) photos_for_deleting = database.get_photos_for_deleting( message.from_user.id) for photo in photos_for_deleting: if ydisk.disk.exists(photo["filepath"]): ydisk.disk.remove(photo["filepath"]) if photo["source"] is not None: database.increment_insta_stat(photo["source"], "unapproved_photos") database.delete_photo(photo["hash"]) bot.send_message(message.chat.id, "Ваши правки применены.")
def do(bot: TeleBot, bot_state: BotState, message: Message, database: DataBase, ydisk: YandexDisk): bot.send_message( message.chat.id, "Начата проверка фотографий. Чтобы закончить проверку, введите любую другую команду (/help)." ) print("{}: started photo validation".format(message.from_user.username)) state_additional = bot_state.get_state(message.from_user.id)["additional"] keyboard1 = ReplyKeyboardMarkup(resize_keyboard=True) keyboard1.row("Подтвердить", "Удалить") keyboard1.row("Отменить последнее решение") keyboard2 = ReplyKeyboardMarkup(resize_keyboard=True) keyboard2.row("Подтвердить", "Удалить") state_additional["keyboard"] = { "with_cancel": keyboard1, "normal": keyboard2 } photo = send_photo(bot, bot_state, message, database, ydisk) state_additional["last_photo"] = photo
def send_canceled_photo(photo, bot: TeleBot, bot_state: BotState, message: Message, ydisk: YandexDisk): state_additional = bot_state.get_state(message.from_user.id)["additional"] keyboard = state_additional["keyboard"]["normal"] photo_url = ydisk.disk.get_download_link(photo["filepath"]) bot.send_photo(message.chat.id, photo_url, reply_markup=keyboard)