1
Fork 0
mirror of https://github.com/Steffo99/greed.git synced 2024-11-22 05:54:18 +00:00
This commit is contained in:
Steffo 2018-05-04 15:46:07 +02:00
parent 3e1f8dfb3a
commit 0eaa0188b9
3 changed files with 71 additions and 5 deletions

View file

@ -269,17 +269,20 @@ ask_credit = "Di quanto vuoi modificare il credito del cliente?\n" \
"Metti un segno </i><code>+</code><i> se vuoi aggiungere credito all'account del cliente," \
" oppure un segno </i><code>-</code><i> se vuoi dedurlo.</i>"
# Header for the edit admin message
admin_properties = "<b>Permessi di {name}:</b>"
# Edit admin: can edit products?
ask_edit_products = "Vuoi che questo 💼 Gestore sia autorizzato a modificare la configurazione dei prodotti?"
prop_edit_products = "Modifica prodotti"
# Edit admin: can receive orders?
ask_receive_orders = "Vuoi che questo 💼 Gestore sia autorizzato a ricevere e gestire gli ordini?"
prop_receive_orders = "Gestisci ordini"
# Edit admin: can create transactions?
ask_create_transactions = "Vuoi che questo 💼 Gestore sia autorizzato a creare nuove transazioni?"
prop_create_transactions = "Crea transazioni"
# Edit admin: should be displayed on help
ask_display_on_help = "Vuoi che questo 💼 Gestore venga visualizzato nella sezione Contatta il negozio?"
# Edit admin: show on help message?
prop_display_on_help = "Assistenza cliente"
# Thread has started downloading an image and might be unresponsive
downloading_image = "Sto scaricando la tua foto!\n" \

View file

@ -6,6 +6,7 @@ from strings import currency_format_string, currency_symbol
import typing
import os
import sys
import strings
if config["Error Reporting"]["sentry_token"] != \
"https://00000000000000000000000000000000:00000000000000000000000000000000@sentry.io/0000000":
@ -211,3 +212,7 @@ class DuckBot:
return self.bot.send_document(*args, **kwargs)
# More methods can be added here
def boolmoji(boolean: bool):
return strings.emoji_yes if boolean else strings.emoji_no

View file

@ -1126,6 +1126,64 @@ class ChatWorker(threading.Thread):
# Delete the created file
os.remove(f"transactions_{self.chat.id}.csv")
def __add_admin(self):
"""Add an administrator to the bot."""
# Let the admin select an administrator to promote
user = self.__user_select()
# Check if the user is already an administrator
admin = self.session.query(db.Admin).filter_by(user_id=user.user_id).one_or_none()
if admin is None:
# Create the keyboard to be sent
keyboard = telegram.ReplyKeyboardMarkup([[strings.emoji_yes, strings.emoji_no]])
# Ask for confirmation
self.bot.send_message(self.chat.id, strings.conversation_confirm_admin_promotion, reply_markup=keyboard)
# Wait for an answer
selection = self.__wait_for_specific_message([strings.emoji_yes, strings.emoji_no])
# Proceed only if the answer is yes
if selection == strings.emoji_no:
return
# Create a new admin
admin = db.Admin(user=user,
edit_products=False,
receive_orders=False,
create_transactions=False,
is_owner=False,
display_on_help=False)
# Send the empty admin message and record the id
message = self.bot.send_message(self.chat.id, strings.admin_properties.format(name=str(admin.user)))
# Start accepting edits
while True:
# Create the inline keyboard with the admin status
inline_keyboard = telegram.InlineKeyboardMarkup([
[telegram.InlineKeyboardButton(f"{utils.boolmoji(admin.edit_products)} {strings.prop_edit_products}",
callback_data="toggle_edit_products")],
[telegram.InlineKeyboardButton(f"{utils.boolmoji(admin.receive_orders)} {strings.prop_receive_orders}",
callback_data="toggle_receive_orders")],
[telegram.InlineKeyboardButton(
f"{utils.boolmoji(admin.create_transactions)} {strings.prop_create_transactions}",
callback_data="toggle_create_transactions")],
[telegram.InlineKeyboardButton(
f"{utils.boolmoji(admin.display_on_help)} {strings.prop_display_on_help}",
callback_data="toggle_display_on_help")],
[telegram.InlineKeyboardButton(strings.menu_done, callback_data="cmd_done")]
])
# Update the inline keyboard
self.bot.edit_message_reply_markup(message, reply_markup=inline_keyboard)
# Wait for an user answer
callback = self.__wait_for_inlinekeyboard_callback()
# Toggle the correct property
if callback.data == "toggle_edit_products":
admin.edit_products = not admin.edit_products
elif callback.data == "toggle_receive_orders":
admin.receive_orders = not admin.receive_orders
elif callback.data == "toggle_create_transactions":
admin.create_transactions = not admin.create_transactions
elif callback.data == "toggle_display_on_help":
admin.display_on_help = not admin.display_on_help
elif callback.data == "cmd_done":
break
self.session.commit()
def __graceful_stop(self, stop_trigger: StopSignal):
"""Handle the graceful stop of the thread."""
# If the session has expired...