Exemplo n.º 1
0
def handle_bot_unauthorized(bot, chat_id, user, try_again=None):
    text = ('OH! Scheinbar darf ich nicht privat mit dir reden, ' + user + '. '
            'Versuche, dich in einem Privatchat mit mir '
            'mit /start oder /key zu authentifizieren.')
    if try_again:
        text += ' Danach kannst du ' + try_again + ' nochmal probieren.'
    notify = check_notify("group_settings", chat_id, "notify_unauthorized")
    if notify:
        bot.send_message(chat_id, text)
Exemplo n.º 2
0
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
Exemplo n.º 3
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.')
Exemplo n.º 4
0
def handle_bot_not_admin(bot, chat_id):
    bot_is_admin = False
    for _ in bot.get_chat_administrators(chat_id):
        if _.user.username == bot.username:
            bot_is_admin = True  # error was raised because no modification occurs
    notify = check_notify("group_settings", chat_id, "notify_not_admin")
    if not bot_is_admin and notify:
        bot.send_message(
            chat_id, 'Hey Leute, leider bin ich hier kein Admin. '
            'Das fällt gerade auf, weil ich so ein paar '
            'meiner Funktionen nicht nutzen kann:\n'
            '- Gruppennamen verändern '
            '(um das Datum des nächsten Spieleabends einzutragen)\n'
            '- Gruppenbeschreibung verändern '
            '(um eine Teilnehmerliste zu führen)\n'
            '- Nachrichten von anderen Gruppenmitgliedern löschen '
            '(ZENSUR! Nein, im Ernst, es macht alles übersichtlicher.)\n'
            'Bitte überlegt euch, ob ihr das wirklich verpassen wollt :)')
Exemplo n.º 5
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.')