def add_keyword(bot, update, chat_data): user = User.from_telegram_object(update.effective_user) if check_suggestion_limit(bot, update, user): return kw = update.message.text bot_to_edit = chat_data.get('edit_bot') kw = helpers.format_keyword(kw) # Sanity checks if kw in settings.FORBIDDEN_KEYWORDS: update.message.reply_text('The keyword {} is forbidden.'.format(kw)) return if len(kw) <= 1: update.message.reply_text('Keywords must be longer than 1 character.') return if len(kw) >= 20: update.message.reply_text( 'Keywords must not be longer than 20 characters.') # Ignore duplicates try: Keyword.get((Keyword.name == kw) & (Keyword.entity == bot_to_edit)) return except Keyword.DoesNotExist: pass Suggestion.add_or_update(user=user, action='add_keyword', subject=bot_to_edit, value=kw) set_keywords(bot, update, chat_data, bot_to_edit) Statistic.of(update, 'added keyword to'.format(kw), bot_to_edit.username)
def set_text_property(bot, update, chat_data, property_name, to_edit=None): uid = util.uid_from_update(update) user = User.from_update(update) if check_suggestion_limit(bot, update, user): return if to_edit: text = (util.escape_markdown(getattr(to_edit, property_name)) + "\n\n" if getattr(to_edit, property_name) else '') text += mdformat.action_hint( messages.SET_BOTPROPERTY.format( property_name, util.escape_markdown(to_edit.username), CLEAR_QUERY)) if property_name == 'description': text += ', markdown enabled.' update.effective_message.reply_text( text, reply_markup=ForceReply(selective=True), parse_mode=ParseMode.MARKDOWN) chat_data['edit_bot'] = to_edit elif update.message: value = None text = update.message.text to_edit = chat_data.get('edit_bot', None) def too_long(n): bot.formatter.send_failure( uid, "Your {} text is too long, it must be shorter " "than {} characters. Please try again.".format( property_name, n)) util.wait(bot, update) return admin.edit_bot(bot, update, chat_data, to_edit) # Validation if property_name == 'description' and len(text) > 300: return too_long(300) if property_name == 'username': value = helpers.validate_username(text) if value: to_edit = chat_data.get('edit_bot', None) else: bot.formatter.send_failure( uid, "The username you entered is not valid. Please try again..." ) return admin.edit_bot(bot, update, chat_data, to_edit) if not value: value = text if to_edit: if _is_clear_query(text): Suggestion.add_or_update(user, property_name, to_edit, None) else: Suggestion.add_or_update(user, property_name, to_edit, value) admin.edit_bot(bot, update, chat_data, to_edit) else: bot.formatter.send_failure(uid, "An unexpected error occured.")
def remove_keyword(bot, update, chat_data, context): user = User.from_telegram_object(update.effective_user) if check_suggestion_limit(bot, update, user): return to_edit = context.get('to_edit') kw = context.get('keyword') Suggestion.add_or_update(user=user, action='remove_keyword', subject=to_edit, value=kw.name) return set_keywords(bot, update, chat_data, to_edit)
def set_country(bot, update, to_edit, country): user = User.from_update(update) if check_suggestion_limit(bot, update, user): return if isinstance(country, Country): value = country.id elif country is None or country == 'None': value = None else: raise AttributeError("Error setting country to {}.".format(country)) Suggestion.add_or_update(user, 'country', to_edit, value)
def change_category(bot, update, to_edit, category): uid = update.effective_user.id user = User.get(User.chat_id == uid) if uid == 918962: # Special for t3chno to_edit.category = category to_edit.save() else: if check_suggestion_limit(bot, update, user): return Suggestion.add_or_update(user, 'category', to_edit, category.id)
def toggle_value(bot, update, property_name, to_edit, value): user = User.from_update(update) if check_suggestion_limit(bot, update, user): return Suggestion.add_or_update(user, property_name, to_edit, bool(value))