def user_settings_callback(bot, update, data): # data = [user handle, id, ] day_amount = int(data[1]) user = TGUser.get(handle=data[0]) user.classified_expiry_days = day_amount user.save() return "Preferences saved."
def tag_button_callback(bot, update, data): # data = [user handle, id, ] tag_id = int(data[1]) user = TGUser.get(handle=data[0]) tag = Tag.get(id=tag_id) TGUserToTag.get_or_create(user=user, tag=tag) return f"Selected {tag.tag}"
def remove_tag_callback(bot, update, data): # data = [user handle, id, ] tag_id = int(data[1]) user = TGUser.get(handle=data[0]) tag = Tag.get(id=tag_id) TGUserToTag.get(user=user, tag=tag).delete_instance() return f"Removed {tag.tag}"
def remove_tag(bot, update): user = TGUser.get(handle=update.message.from_user.username) buttons = [[ InlineKeyboardButton( tag.tag, callback_data=f'{REMOVETAG}:{user.handle}:{tag.id}') ] for tag in Tag.select().join(TGUserToTag).where(TGUserToTag.user == user) ] buttons.append( [InlineKeyboardButton("Cancel", callback_data=CANCEL_ACTION)]) keyboard = InlineKeyboardMarkup(buttons, one_time_keyboard=True) update.message.reply_text("Choose a tag to remove:", reply_markup=keyboard)
def select_tags(bot, update): user = TGUser.get(handle=update.message.from_user.username) buttons = [[ InlineKeyboardButton( tag.tag, callback_data=f'{TAGBUTTON}:{user.handle}:{tag.id}') ] for tag in Tag.select()] buttons.append( [InlineKeyboardButton("Cancel", callback_data=CANCEL_ACTION)]) keyboard = InlineKeyboardMarkup(buttons, one_time_keyboard=True) update.message.reply_text("Choose a tag to subscribe to:", reply_markup=keyboard)
def select_expiry(bot, update): user = TGUser.get(handle=update.message.from_user.username) buttons = [[ InlineKeyboardButton( day_amount, callback_data=f'{USERSETTINGS}:{user.handle}:{day_amount}') ] for day_amount in TGUserSettings.CLASSIFIED_DAYS] buttons.append( [InlineKeyboardButton("Cancel", callback_data=CANCEL_ACTION)]) keyboard = InlineKeyboardMarkup(buttons, one_time_keyboard=True) update.message.reply_text("Choose how old classifieds sent to you can be:", reply_markup=keyboard)
def get_classifieds(bot, update): user = TGUser.get(handle=update.message.from_user.username) tags = Tag.select().join(TGUserToTag).where(TGUserToTag.user == user) messages = Message.select().join(MessageToTags).where( MessageToTags.tag << tags) for message in messages: mtts = message.messagetotags_set message_tags = [mtt.tag for mtt in mtts] # query = MessageToTags.select(MessageToTags, Tag).join(Message).where(Message.uuid == message) # if query: # TODAS las tags del usuario estan contenidas en el set de tags del mensaje if all(tag in message_tags for tag in tags): update.message.reply_text(message.content)
def add_tag(bot, update): user = TGUser.get(handle=update.message.from_user.username) update.message.reply_text( "Updating tags of all messages, this may take a minute or two....") import ipdb ipdb.set_trace() tag = Tag.create(tag=update.message.text.split()[1]) for message in Message.select().where( sqlfn.LOWER(Message.content).contains(tag.tag.lower())): MessageToTags.create(message=message, tag=tag) TGUserToTag.create( user=user, tag=tag, ) update.message.reply_text("Done!")
def stop(bot, update): update.message.reply_text("Deleted your subscription.") user = TGUser.get(handle=update.message.from_user.username) TGUserToTag.delete().where(TGUserToTag.user == user).execute() user.delete_instance()
def list_tags(bot, update): user = TGUser.get(handle=update.message.from_user.username) tags = Tag.select().join(TGUserToTag).where(TGUserToTag.user == user) update.message.reply_text(f"Your tags: {[t.tag for t in tags]}")