def csv_import(update, context): if check_user(update.message.chat_id): if "group" in update.message.chat.type: try: context.bot.delete_message(update.message.chat_id, update.message.message_id) except BadRequest: handle_bot_not_admin(context.bot, update.message.chat_id) try: context.bot.send_message(update.message.from_user.id, 'Hey, /csv_import kannst du im Gruppenchat ' 'nicht verwenden. Hier schon!') except Unauthorized: handle_bot_unauthorized(context.bot, update.message.chat_id, update.message.from_user.username, try_again='das Ganze im Privatchat') elif "private" in update.message.chat.type: msg = context.bot.send_message(update.message.chat_id, 'Gib die Daten ein, die du im CSV-Format ' 'in die Spiele-Datenbank importieren ' 'möchtest.\n' 'Format: Besitzer, Titel, Max. Spielerzahl, ' 'Kategorie_1, Kategorie_2, ... ' 'Pro Zeile ein Spiel', reply_markup=ForceReply()) ForceReplyJobs().add(msg.message_id, "csv") else: update.message.reply_text('Bitte authentifiziere dich zunächst ' 'mit /key.')
def zufallsspiel(update, context): if check_user(update.message.chat_id): if "group" in update.message.chat.type: try: context.bot.delete_message(update.message.chat_id, update.message.message_id) except BadRequest: handle_bot_not_admin(context.bot, update.message.chat_id) try: context.bot.send_message(update.message.from_user.id, 'Hey, /zufallsspiel kannst du im Gruppenchat ' 'nicht verwenden. Hier schon!') except Unauthorized: handle_bot_unauthorized(context.bot, update.message.chat_id, update.message.from_user.username, try_again='das Ganze im Privatchat') elif "private" in update.message.chat.type: opt = [] entries = get_playable_entries('games', 'title', update.message.from_user.username) for e in entries: opt.append(parse_single_db_entry_to_string(e)) game = opt[randrange(len(opt))] update.message.reply_text('Wie wäre es mit ' + game + '?') else: update.message.reply_text('Bitte authentifiziere dich zunächst ' 'mit /key.')
def erweiterungen(update, context): if check_user(update.message.chat_id): if "group" in update.message.chat.type: try: context.bot.delete_message(update.message.chat_id, update.message.message_id) except BadRequest: handle_bot_not_admin(context.bot, update.message.chat_id) try: context.bot.send_message(update.message.from_user.id, 'Hey, /erweiterungen kannst du im Gruppenchat ' 'nicht verwenden. Hier schon!') except Unauthorized: handle_bot_unauthorized(context.bot, update.message.chat_id, update.message.from_user.username, try_again='das Ganze im Privatchat') elif "private" in update.message.chat.type: msg = context.bot.send_message(update.message.chat_id, 'Für welches Grundspiel fragst du?\n' 'Antworte mit /stop, um abzubrechen.', reply_markup=ForceReply()) ForceReplyJobs().add(msg.message_id, "expansions_list") else: update.message.reply_text('Bitte authentifiziere dich zunächst ' 'mit /key.')
def neue_erweiterung(update, context): if check_user(update.message.chat_id): if "group" in update.message.chat.type: try: context.bot.delete_message(update.message.chat_id, update.message.message_id) except BadRequest: handle_bot_not_admin(context.bot, update.message.chat_id) try: context.bot.send_message(update.message.from_user.id, 'Hey, /neue_erweiterung kannst du im Gruppenchat ' 'nicht verwenden. Hier schon!') except Unauthorized: handle_bot_unauthorized(context.bot, update.message.chat_id, update.message.from_user.username, try_again='das Ganze im Privatchat') elif "private" in update.message.chat.type: msg = context.bot.send_message(update.message.chat_id, 'Für welches Spiel hast du eine neue ' 'Erweiterung?\n' 'Antworte mit /stop, um abzubrechen.', reply_markup=ForceReply()) user_or_household_id = check_household( update.message.from_user.username) ForceReplyJobs().add_with_query(msg.message_id, "expansion_for", "new_expansion," + user_or_household_id) else: update.message.reply_text('Bitte authentifiziere dich zunächst ' 'mit /key.')
def spiele(update, context): if check_user(update.message.chat_id): if "group" in update.message.chat.type: try: context.bot.delete_message(update.message.chat_id, update.message.message_id) except BadRequest: handle_bot_not_admin(context.bot, update.message.chat_id) try: context.bot.send_message(update.message.from_user.id, 'Hey, /spiele kannst du im Gruppenchat ' 'nicht verwenden. Hier schon!') except Unauthorized: handle_bot_unauthorized(context.bot, update.message.chat_id, update.message.from_user.username, try_again='das Ganze im Privatchat') elif "private" in update.message.chat.type: gamestring = parse_db_entries_to_messagestring( search_by_substring(choose_database("datadb"), 'games', "owner", update.message.from_user.username)) if len(gamestring) == 0: context.bot.send_message(update.message.chat_id, text="Dass du Spiele hast, wäre mir neu. " "Wenn es doch der Fall ist, sag mir das mit /neues_spiel!") else: update.message.reply_text('Du hast folgende Spiele:') context.bot.send_message(update.message.chat_id, text=gamestring) else: update.message.reply_text('Bitte authentifiziere dich zunächst ' 'mit /key.')
def ich(update, context): if check_user(update.message.chat_id): if "group" in update.message.chat.type: plan = GameNight() check = plan.add_participant(update.message.from_user.username) send_message = check_notify("settings", update.message.from_user.username, "notify_participation") handled_unauthorized = False if send_message < 0: # no entry in table, user hasn't talked to bot yet handled_unauthorized = True handle_bot_unauthorized(context.bot, update.message.chat_id, update.message.from_user.first_name) if check < 0: update.message.reply_text( 'Das war leider nichts. Vereinbart erst einmal einen ' 'Termin mit /neuer_termin.') else: try: context.bot.set_chat_description(update.message.chat_id, plan.get_participants()) except BadRequest: handle_bot_not_admin(context.bot, update.message.chat.id) if send_message: if check > 0: text = ('Alles gut, ' + update.message.from_user.first_name + ', ' 'ich weiß schon, dass du am ' + plan.date + ' teilnimmst.') else: # check = 0 text = ('Danke für deine Zusage zum Spieleabend ' + plan.date + ', ' + update.message.from_user.first_name + '!') try: context.bot.send_message(update.message.from_user.id, text) if check == 0 and match('\\d\\d[\\/]\\d\\d[\\/]\\d\\d\\d\\d', str(plan.date)) is not None: context.bot.send_document(update.message.from_user.id, document=open(plan.cal_file, 'rb'), filename=("Spieleabend " + str(plan.date).replace('/', '-') + ".ics")) except Unauthorized: if not handled_unauthorized: # don't send two warnings within the same command handle_bot_unauthorized(context.bot, update.message.chat.id, update.message.from_user.first_name, try_again="/ich") handled_unauthorized = True elif "private" in update.message.chat.type: update.message.reply_text('Stopp, das hat hier nichts zu suchen.\n' 'Bitte versuche es im Gruppenchat...') else: update.message.reply_text('Bitte authentifiziere dich zunächst ' 'mit /key.')
def handle_vote(update, context): plan = GameNight() if plan.poll is not None: check = plan.poll.register_vote(update.message.from_user.username, update.message.text) send_message = check_notify("settings", update.message.from_user.username, "notify_vote") handled_unauthorized = False if send_message < 0: # no entry in table, user hasn't talked to bot yet handle_bot_unauthorized(context.bot, update.message.chat_id, update.message.from_user.first_name) handled_unauthorized = True if check == 0 and send_message: # user voted the same thing try: context.bot.send_message( update.message.from_user.id, "Okay " + update.message.from_user.first_name + ", du hast erneut für " + update.message.text + " gestimmt. Du musst mir das nicht mehrmals " "sagen, ich bin fähig ;)") except Unauthorized: if not handled_unauthorized: handle_bot_unauthorized( context.bot, update.message.chat_id, update.message.from_user.first_name) handled_unauthorized = True elif check < 0: # user not allowed to vote try: context.bot.send_message( update.message.from_user.id, "Das hat nicht funktioniert. " "Vielleicht darfst du gar nicht abstimmen, " + update.message.from_user.first_name + "?") except Unauthorized: if not handled_unauthorized: handle_bot_unauthorized( context.bot, update.message.chat_id, update.message.from_user.first_name) handled_unauthorized = True elif check > 0 and send_message: # user gave a new vote try: context.bot.send_message( update.message.from_user.id, "Okay " + update.message.from_user.first_name + ", du hast für " + update.message.text + " gestimmt.") except Unauthorized: if not handled_unauthorized: handle_bot_unauthorized( context.bot, update.message.chat_id, update.message.from_user.first_name, try_again="das mit dem Abstimmen") handled_unauthorized = True
def wer(update, context): if check_user(update.message.chat_id): if "group" in update.message.chat.type: try: context.bot.delete_message(update.message.chat_id, update.message.message_id) except BadRequest: handle_bot_not_admin(context.bot, update.message.chat_id) try: context.bot.send_message(update.message.from_user.id, 'Hey, /wer kannst du im Gruppenchat ' 'nicht verwenden. Hier schon!') except Unauthorized: handle_bot_unauthorized(context.bot, update.message.chat_id, update.message.from_user.username, try_again='das Ganze im Privatchat') elif "private" in update.message.chat.type: participants = GameNight().get_participants() update.message.reply_text(participants) else: update.message.reply_text('Bitte authentifiziere dich zunächst ' 'mit /key.')
def genrespiel(update, context): if check_user(update.message.chat_id): if "group" in update.message.chat.type: try: context.bot.delete_message(update.message.chat_id, update.message.message_id) except BadRequest: handle_bot_not_admin(context.bot, update.message.chat_id) try: context.bot.send_message(update.message.from_user.id, 'Hey, /genrespiel kannst du im Gruppenchat ' 'nicht verwenden. Hier schon!') except Unauthorized: handle_bot_unauthorized(context.bot, update.message.chat_id, update.message.from_user.username, try_again='das Ganze im Privatchat') elif "private" in update.message.chat.type: update.message.reply_text( 'Auf welche Kategorie hast du denn heute Lust?', reply_markup=generate_findbycategory()) else: update.message.reply_text('Bitte authentifiziere dich zunächst ' 'mit /key.')
def nichtich(update, context): if check_user(update.message.chat_id): if "group" in update.message.chat.type: plan = GameNight() check = plan.remove_participant(update.message.from_user.username) send_message = check_notify("settings", update.message.from_user.username, "notify_participation") handled_unauthorized = False if send_message < 0: # no entry in table, user hasn't talked to bot yet handle_bot_unauthorized(context.bot, update.message.chat_id, update.message.from_user.first_name) handled_unauthorized = True if check < 0 and send_message: try: context.bot.send_message(update.message.from_user.id, 'Danke für deine Absage. ' 'Schade, dass du nicht teilnehmen kannst.') except Unauthorized: if not handled_unauthorized: handle_bot_unauthorized(context.bot, update.message.chat_id, update.message.from_user.first_name, try_again="/nichtich") handled_unauthorized = True elif check >= 0: try: context.bot.set_chat_description(update.message.chat_id, plan.get_participants()) except BadRequest: handle_bot_not_admin(context.bot, update.message.chat.id) if send_message: try: context.bot.send_message(update.message.from_user.id, 'Schade, dass du doch nicht ' 'teilnehmen kannst, ' + update.message.from_user.first_name + '.') except Unauthorized: if not handled_unauthorized: handle_bot_unauthorized(context.bot, update.message.chat_id, update.message.from_user.first_name, try_again="/nichtich") handled_unauthorized = True elif "private" in update.message.chat.type: update.message.reply_text('Stopp, das hat hier nichts zu suchen.\n' 'Bitte versuche es im Gruppenchat...') else: update.message.reply_text('Bitte authentifiziere dich zunächst ' 'mit /key.')