diff --git a/bot.py b/bot.py index ee3ebd0..5891b3c 100644 --- a/bot.py +++ b/bot.py @@ -348,6 +348,8 @@ def drop_state(bot, update, player): x = questable.get_side_quest(player.DB, player.CHAT_ID, state["extra"]) x.delete_from_db() player.set_state('none', 0) + else: + player.set_state('none', 0) def help_command(bot, update, db): @@ -385,6 +387,56 @@ def rate_command(bot, update, db): reply_markup=reply_markup) +def tokens(bot, update): + custom_keyboard = button_groups.tokens + reply_markup = telegram.ReplyKeyboardMarkup(custom_keyboard) + reply_text = ("Tokens are used to authenticate external " + "applications. This only provides access to " + "Questable data.") + bot.send_message(chat_id=update.message.chat_id, text=reply_text, + reply_markup=reply_markup) + + +def add_token(bot, update, player): + custom_keyboard = button_groups.main + reply_markup = telegram.ReplyKeyboardMarkup(custom_keyboard) + if len(player.get_tokens()) < 3: + reply_text = player.add_token() + else: + reply_text = "Maximum number of tokens reached." + bot.send_message(chat_id=player.CHAT_ID, text=reply_text, + reply_markup=reply_markup) + + +def delete_token(bot, update, player): + tokens = player.get_tokens() + custom_keyboard = list(map(lambda x: [x], tokens)) + reply_markup = telegram.ReplyKeyboardMarkup(custom_keyboard) + reply_text = "Choose token to remove." + player.set_state("rt") + bot.send_message(chat_id=update.message.chat_id, text=reply_text, + reply_markup=reply_markup) + + +def delete_token_rt(bot, update, player): + player.delete_token(update.message.text.lower()) + custom_keyboard = button_groups.main + reply_markup = telegram.ReplyKeyboardMarkup(custom_keyboard) + reply_text = "Token has been removed." + player.set_state("none") + bot.send_message(chat_id=player.CHAT_ID, text=reply_text, + reply_markup=reply_markup) + + +def list_tokens(bot, update, player): + custom_keyboard = button_groups.main + reply_markup = telegram.ReplyKeyboardMarkup(custom_keyboard) + reply_text = "๐Ÿ“‹ List of tokens\n\n" + reply_text += "\n".join(player.get_tokens()) + bot.send_message(chat_id=update.message.chat_id, text=reply_text, + reply_markup=reply_markup) + + def message_handling(bot, update, db): text = update.message.text.lower() player = questable.player(db, update.message.chat_id) @@ -402,6 +454,7 @@ def message_handling(bot, update, db): # eqn / esqn: Edit Quest / Side Quest Name # eqi / esqi: Edit Quest / Side Quest Importance # eqd / esqd: Edit Quest / Side Quest Difficulty + # rt: Remove token if state["state"] == "none": if text == "add quest" or text == "โ‡๏ธ add quest": @@ -412,6 +465,17 @@ def message_handling(bot, update, db): list_quests(bot, update, player, "quest") elif text == "list side quests" or text == "๐Ÿ“ƒ list side quests": list_quests(bot, update, player, "side_quest") + elif text == "tokens" or text == "๐Ÿ”‘ tokens": + tokens(bot, update) + elif text == "list tokens" or text == "๐Ÿ“‹ list tokens": + list_tokens(bot, update, player) + + elif text == "generate token" or text == "๐Ÿ”‘ generate token": + add_token(bot, update, player) + + elif text == "delete token" or text == "๐Ÿงน delete token": + delete_token(bot, update, player) + else: drop_state(bot, update, player) send_status(bot, update, player) @@ -528,6 +592,8 @@ def message_handling(bot, update, db): elif state["state"] == "esqd": edit_quest(bot, update, player, state["extra"], "diff", "side_quest") + elif state["state"] == "rt": + delete_token_rt(bot, update, player) else: drop_state(bot, update, player) send_status(bot, update, player) diff --git a/button_groups.py b/button_groups.py index d66618f..b5c5174 100644 --- a/button_groups.py +++ b/button_groups.py @@ -1,7 +1,7 @@ main = [ ['โ‡๏ธ Add Quest', '๐Ÿ“ฏ Add Side Quest'], ['๐Ÿ“œ List Quests', '๐Ÿ“ƒ List Side Quests'], - ['๐Ÿ… Player Status'] + ['๐Ÿ… Player Status', '๐Ÿ”‘ Tokens'] ] importance = [["๐Ÿ”น Low", "๐Ÿ”ธ Medium", "๐Ÿ”บ High"]] @@ -15,3 +15,9 @@ def quests(cat): ["๐Ÿ“š Change Difficulty", "๐Ÿ—‘ Delete " + {"quest": "Quest", "side_quest": "Side Quest"}[cat]], ["โฌ…๏ธ Back"]] + + +tokens = [ + ["๐Ÿ“‹ List tokens"], + ["๐Ÿ”‘ Generate token", "๐Ÿงน Delete token"] + ]