mirror of
https://github.com/Steffo99/greed.git
synced 2024-11-22 05:54:18 +00:00
Add "Add Credit" menu
This commit is contained in:
parent
782e036be3
commit
2720d96c57
5 changed files with 74 additions and 11 deletions
|
@ -3,7 +3,7 @@
|
||||||
# Config file parameters
|
# Config file parameters
|
||||||
[Config]
|
[Config]
|
||||||
; Config file version. DO NOT EDIT THIS!
|
; Config file version. DO NOT EDIT THIS!
|
||||||
version = 4
|
version = 5
|
||||||
; Set this to no when you are done editing the file
|
; Set this to no when you are done editing the file
|
||||||
is_template = yes
|
is_template = yes
|
||||||
|
|
||||||
|
@ -20,4 +20,11 @@ long_polling_timeout = 30
|
||||||
# Database parameters
|
# Database parameters
|
||||||
[Database]
|
[Database]
|
||||||
; The database engine you want to use. Refer to http://docs.sqlalchemy.org/en/latest/core/engines.html for the possible settings.
|
; The database engine you want to use. Refer to http://docs.sqlalchemy.org/en/latest/core/engines.html for the possible settings.
|
||||||
engine = sqlite://
|
engine = sqlite://
|
||||||
|
|
||||||
|
# Enabled payment methods
|
||||||
|
# To disable, leave the row empty
|
||||||
|
[Payment Methods]
|
||||||
|
# Cash payment is always enabled
|
||||||
|
# Credit card: get the token at @BotFather
|
||||||
|
credit_card_token = 123456789:YOUR_TOKEN_HERE_
|
2
core.py
2
core.py
|
@ -94,7 +94,7 @@ def main():
|
||||||
# Ensure a worker exists for the chat and is alive
|
# Ensure a worker exists for the chat and is alive
|
||||||
if receiving_worker is None or not receiving_worker.is_alive():
|
if receiving_worker is None or not receiving_worker.is_alive():
|
||||||
# Suggest that the user restarts the chat with /start
|
# Suggest that the user restarts the chat with /start
|
||||||
bot.send_message(update.message.chat.id, strings.error_no_worker_for_chat, telegram.ReplyKeyboardRemove())
|
bot.send_message(update.message.chat.id, strings.error_no_worker_for_chat, reply_markup=telegram.ReplyKeyboardRemove())
|
||||||
# Skip the update
|
# Skip the update
|
||||||
continue
|
continue
|
||||||
# Forward the update to the worker
|
# Forward the update to the worker
|
||||||
|
|
|
@ -128,6 +128,12 @@ class Transaction(TableDeclarativeBase):
|
||||||
return f"<Transaction {self.transaction_id} - User {self.user_id} {str(self)}>"
|
return f"<Transaction {self.transaction_id} - User {self.user_id} {str(self)}>"
|
||||||
|
|
||||||
|
|
||||||
|
# TODO
|
||||||
|
# class Order(TableDeclarativeBase):
|
||||||
|
# """A product order."""
|
||||||
|
# pass
|
||||||
|
|
||||||
|
|
||||||
class Admin(TableDeclarativeBase):
|
class Admin(TableDeclarativeBase):
|
||||||
"""A greed administrator with his permissions."""
|
"""A greed administrator with his permissions."""
|
||||||
|
|
||||||
|
|
24
strings.py
24
strings.py
|
@ -11,16 +11,19 @@ currency_format_string = "{symbol} {value}"
|
||||||
# Quantity of a product in stock
|
# Quantity of a product in stock
|
||||||
in_stock_format_string = "{quantity} disponibili"
|
in_stock_format_string = "{quantity} disponibili"
|
||||||
|
|
||||||
# Answer: the start command was sent and the bot should welcome the user
|
# Conversation: the start command was sent and the bot should welcome the user
|
||||||
conversation_after_start = "Ciao!\n" \
|
conversation_after_start = "Ciao!\n" \
|
||||||
"Benvenuto su greed!"
|
"Benvenuto su greed!"
|
||||||
|
|
||||||
# Answer: to send an inline keyboard you need to send a message with it
|
# Conversation: to send an inline keyboard you need to send a message with it
|
||||||
conversation_open_user_menu = "Allora, {username}, cosa vorresti fare?"
|
conversation_open_user_menu = "Allora, {username}, cosa vorresti fare?"
|
||||||
|
|
||||||
# Answer: the same message as above but when the first has already been sent
|
# Conversation: the same message as above but when the first has already been sent
|
||||||
conversation_open_user_menu_multiple = "Hai bisogno di qualcos'altro?"
|
conversation_open_user_menu_multiple = "Hai bisogno di qualcos'altro?"
|
||||||
|
|
||||||
|
# Conversation: select a payment method
|
||||||
|
conversation_payment_method = "Come vuoi aggiungere fondi al tuo portafoglio?"
|
||||||
|
|
||||||
# Notification: the conversation has expired
|
# Notification: the conversation has expired
|
||||||
conversation_expired = "🕐 Il bot non ha ricevuto messaggi per un po' di tempo, quindi ha chiuso la conversazione.\n" \
|
conversation_expired = "🕐 Il bot non ha ricevuto messaggi per un po' di tempo, quindi ha chiuso la conversazione.\n" \
|
||||||
"Per riavviarne una nuova, invia il comando /start."
|
"Per riavviarne una nuova, invia il comando /start."
|
||||||
|
@ -33,11 +36,24 @@ menu_order = "🛍 Ordina"
|
||||||
menu_order_status = "❓ Stato ordini"
|
menu_order_status = "❓ Stato ordini"
|
||||||
|
|
||||||
# User menu: add credit
|
# User menu: add credit
|
||||||
menu_add_credit = "💵 Ricarica"
|
menu_add_credit = "💵 Aggiungi fondi"
|
||||||
|
|
||||||
# User menu: bot info
|
# User menu: bot info
|
||||||
menu_bot_info = "ℹ️ Informazioni sul bot"
|
menu_bot_info = "ℹ️ Informazioni sul bot"
|
||||||
|
|
||||||
|
# User menu: cash
|
||||||
|
menu_cash = "💵 In contanti"
|
||||||
|
|
||||||
|
# User menu: credit card
|
||||||
|
menu_credit_card = "💳 Con una carta di credito"
|
||||||
|
|
||||||
|
# User menu: cancel
|
||||||
|
menu_cancel = "🔙 Annulla"
|
||||||
|
|
||||||
|
# Payment: cash payment info
|
||||||
|
payment_cash = "Puoi pagare in contanti alla sede fisica del negozio.\n" \
|
||||||
|
"Il gestore provvederà ad aggiungere credito al tuo account appena gli avrai consegnato i soldi."
|
||||||
|
|
||||||
# Info: informazioni sul bot
|
# Info: informazioni sul bot
|
||||||
bot_info = 'Questo bot utilizza <a href="https://github.com/Steffo99/greed">greed</a>,' \
|
bot_info = 'Questo bot utilizza <a href="https://github.com/Steffo99/greed">greed</a>,' \
|
||||||
' un framework di @Steffo per i pagamenti su Telegram rilasciato sotto la' \
|
' un framework di @Steffo per i pagamenti su Telegram rilasciato sotto la' \
|
||||||
|
|
42
worker.py
42
worker.py
|
@ -106,7 +106,6 @@ class ChatWorker(threading.Thread):
|
||||||
self.bot.send_message(self.chat.id, strings.conversation_open_user_menu.format(username=str(self.user)),
|
self.bot.send_message(self.chat.id, strings.conversation_open_user_menu.format(username=str(self.user)),
|
||||||
reply_markup=telegram.ReplyKeyboardMarkup(keyboard, one_time_keyboard=True))
|
reply_markup=telegram.ReplyKeyboardMarkup(keyboard, one_time_keyboard=True))
|
||||||
# Wait for a reply from the user
|
# Wait for a reply from the user
|
||||||
# TODO: change this
|
|
||||||
selection = self.__wait_for_specific_message([strings.menu_order, strings.menu_order_status,
|
selection = self.__wait_for_specific_message([strings.menu_order, strings.menu_order_status,
|
||||||
strings.menu_add_credit, strings.menu_bot_info])
|
strings.menu_add_credit, strings.menu_bot_info])
|
||||||
# If the user has selected the Order option...
|
# If the user has selected the Order option...
|
||||||
|
@ -133,6 +132,41 @@ class ChatWorker(threading.Thread):
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
|
|
||||||
def __add_credit_menu(self):
|
def __add_credit_menu(self):
|
||||||
|
"""Add more credit to the account."""
|
||||||
|
# TODO: a loop might be needed here
|
||||||
|
# Create a payment methods keyboard
|
||||||
|
keyboard = list()
|
||||||
|
# Add the supported payment methods to the keyboard
|
||||||
|
# Cash
|
||||||
|
keyboard.append([telegram.KeyboardButton(strings.menu_cash)])
|
||||||
|
# Telegram Payments
|
||||||
|
if configloader.config["Payment Methods"]["credit_card_token"] != "":
|
||||||
|
keyboard.append([telegram.KeyboardButton(strings.menu_credit_card)])
|
||||||
|
# Keyboard: go back to the previous menu
|
||||||
|
keyboard.append([telegram.KeyboardButton(strings.menu_cancel)])
|
||||||
|
# Send the keyboard to the user
|
||||||
|
self.bot.send_message(self.chat.id, strings.conversation_payment_method,
|
||||||
|
reply_markup=telegram.ReplyKeyboardMarkup(keyboard, one_time_keyboard=True))
|
||||||
|
# Wait for a reply from the user
|
||||||
|
selection = self.__wait_for_specific_message([strings.menu_cash, strings.menu_credit_card, strings.menu_cancel])
|
||||||
|
# If the user has selected the Cash option...
|
||||||
|
if selection == strings.menu_cash:
|
||||||
|
# Go to the pay with cash function
|
||||||
|
self.__add_credit_cash()
|
||||||
|
# If the user has selected the Credit Card option...
|
||||||
|
elif selection == strings.menu_credit_card:
|
||||||
|
# Go to the pay with credit card function
|
||||||
|
self.__add_credit_cc()
|
||||||
|
# If the user has selected the Cancel option...
|
||||||
|
elif selection == strings.menu_add_credit:
|
||||||
|
# Send him back to the previous menu
|
||||||
|
return
|
||||||
|
|
||||||
|
def __add_credit_cash(self):
|
||||||
|
"""Tell the user how to pay with cash at this shop"""
|
||||||
|
self.bot.send_message(self.chat.id, strings.payment_cash)
|
||||||
|
|
||||||
|
def __add_credit_cc(self):
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
|
|
||||||
def __bot_info(self):
|
def __bot_info(self):
|
||||||
|
@ -142,12 +176,12 @@ class ChatWorker(threading.Thread):
|
||||||
def __admin_menu(self):
|
def __admin_menu(self):
|
||||||
"""Function called from the run method when the user is an administrator.
|
"""Function called from the run method when the user is an administrator.
|
||||||
Administrative bot actions should be placed here."""
|
Administrative bot actions should be placed here."""
|
||||||
self.bot.send_message(self.chat.id, "Sei un Amministralol")
|
raise NotImplementedError()
|
||||||
|
|
||||||
def __graceful_stop(self):
|
def __graceful_stop(self):
|
||||||
"""Handle the graceful stop of the thread."""
|
"""Handle the graceful stop of the thread."""
|
||||||
# Notify the user that the session has expired
|
# Notify the user that the session has expired and remove the keyboard
|
||||||
self.bot.send_message(self.chat.id, strings.conversation_expired)
|
self.bot.send_message(self.chat.id, strings.conversation_expired, reply_markup=telegram.ReplyKeyboardRemove())
|
||||||
# Close the database session
|
# Close the database session
|
||||||
# End the process
|
# End the process
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
Loading…
Reference in a new issue