Example #1
0
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.')
Example #2
0
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.')
Example #3
0
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.')
Example #4
0
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.')
Example #5
0
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.')
Example #6
0
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
Example #8
0
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.')
Example #9
0
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.')
Example #10
0
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.')