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
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
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
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)