Exemple #1
0
    def command_deleteop(self, bot: Bot, update: Update, groups, user_data):
        opportunity_id = groups[0]

        opportunity = Opportunity.find(opportunity_id)

        if not opportunity:
            update.message.reply_text("Es gibt keine Reise mit dieser ID.")
            return self.END

        user_data["delete_opportunity_id"] = opportunity_id

        text = "Bist du dir sicher, dass du deine Reise am %s nach <strong>%s</strong> absagen möchtest?" % (
            opportunity.date_readable(),
            opportunity.city
        )

        reply = update.message.reply_text(text,
                                          parse_mode=ParseMode.HTML,
                                          reply_markup=InlineKeyboardMarkup(
                                              [[InlineKeyboardButton("Ja, sage die Reise ab",
                                                                     callback_data="deleteop_confirm")],
                                               [InlineKeyboardButton("Nein", callback_data="deleteop_cancel")]])
                                          )

        user_data["message_id"] = reply.message_id

        return self.CONFIRM_DELETION
Exemple #2
0
    def handle_delete_confirmation(self, bot: Bot, update: Update, user_data):
        if update.callback_query.data == "deleteop_confirm":
            opportunity_id = user_data["delete_opportunity_id"]

            opportunity = Opportunity.find(opportunity_id)

            # Benachrichtige Menschen, die bestellt haben
            text = "@marudor hat seine Reise am %s nach <strong>%s</strong> leider abgesagt.\nDeine Bestellung wurde storniert." % (
                opportunity.date_readable(),
                opportunity.city
            )

            for order in opportunity.orders:
                user_id = order.user.telegram_user_id
                bot.sendMessage(user_id, text, parse_mode=ParseMode.HTML)

            opportunity.orders().delete()
            opportunity.delete()

            bot.edit_message_text(chat_id=update.effective_chat.id, message_id=user_data["message_id"],
                                  text="Die Reise wurde entfernt.")
        else:
            bot.edit_message_text(chat_id=update.effective_chat.id, message_id=user_data["message_id"],
                                  text="Ich habe die Reise nicht entfernt.")

        return self.END
Exemple #3
0
    def command_order(self, bot: Bot, update: Update, groups, user_data):
        opportunity_id = groups[0]

        user = User.where_telegram_user_id(update.effective_user.id).first()
        if not user:
            return

        opportunity = Opportunity.find(opportunity_id)
        if not opportunity:
            return

        user_data["neworder"] = Order.first_or_new(
            user_id=user.id, opportunity_id=opportunity_id)

        update.message.reply_text(
            "Du möchtest eine Bestellung für den %s für %s machen.\n\n"
            "Wieviele - und welche - Franzbrötchen möchtest du bestellen?" %
            (opportunity.date.format("%d.%m.%Y"), opportunity.city))
        update.message.reply_text(
            "Spendenempfehlung sind 1,5€ für ein normales Franzbrötchen. 2€ für ein Special Franzbrötchen.\n"
            "Gerne per https://www.paypal.me/marudor überweisen!")
        return self.WAIT_FOR_ORDER_TEXT
Exemple #4
0
    def command_showorders(self, bot: Bot, update: Update, groups):
        opportunity_id = groups[0]

        opportunity = Opportunity.find(opportunity_id)
        orders = opportunity.orders

        if orders.count() == 0:
            text = "Bisher gibt es keine Bestellungen für deine Reise am %s nach <strong>%s</strong>" % (
                opportunity.date_readable(),
                opportunity.city
            )
        else:
            text = "Bestellungen für deine Reise am %s nach <strong>%s</strong>\n" % (
                opportunity.date_readable(),
                opportunity.city
            )

        for order in orders:
            text += "\n▶︎ @%s: %s" % (
                order.user.telegram_username,
                order.order_text
            )

        update.message.reply_text(text, parse_mode=ParseMode.HTML)