1
Fork 0
mirror of https://github.com/Steffo99/greed.git synced 2024-11-25 15:24:17 +00:00

Configuration updates

This commit is contained in:
Steffo 2018-05-03 09:24:04 +02:00
parent 88eed550d2
commit 055f3b72c1
3 changed files with 47 additions and 30 deletions

View file

@ -1,5 +1,5 @@
# greed
A customizable Telegram shop bot, developed for the High School oral exam
A customizable Telegram shop bot, developed as a project for the final exam.
![](https://img.shields.io/badge/version-alpha-blue.svg)

View file

@ -5,7 +5,7 @@
# Config file parameters
[Config]
; Config file version. DO NOT EDIT THIS!
version = 12
version = 13
; Set this to no when you are done editing the file
is_template = yes
@ -13,50 +13,60 @@ is_template = yes
[Telegram]
; Your bot token goes here. Get one from @BotFather!
token = 123456789:YOUR_TOKEN_GOES_HERE_______________
; Time in seconds before a conversation with no new messages expires
; A lower value reduces memory usage but can be inconvenient for the users
; Time in seconds before a conversation (thread) with no new messages expires
; A lower value reduces memory usage, but can be inconvenient for the users
conversation_timeout = 7200
; Time to wait before sending another getUpdates request
; Time to wait before sending another update request if there are no messages
long_polling_timeout = 30
; Time in seconds before retrying a request if it times out
timed_out_pause = 1
; Time in seconds before retrying a request that returned an error
error_pause = 5
# Database parameters
[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://
# General payment settings
[Payments]
# ISO currency code
; ISO currency code
currency = EUR
# Currency exp parameter. You can find that on https://core.telegram.org/bots/payments/currencies.json
; Currency exp parameter. You can find that on https://core.telegram.org/bots/payments/currencies.json.
; It has a value of 2 in most currencies (EUR, USD, GBP...)
currency_exp = 2
# Credit card payment settings
[Credit Card]
# Provider token: get the token at @BotFather
; Provider token: get the token by linking the payment provider with @BotFather
credit_card_token = 123456789:YOUR_TOKEN_HERE_
# Minimum wallet payment accepted (in miniumum currency units, $1.00 = 100 units)
; Minimum wallet payment accepted (in miniumum currency units, $1.00 = 100 units)
min_amount = 1000
# Maximum wallet payment accepted (in miniumum currency units, $1.00 = 100 units)
; Maximum wallet payment accepted (in miniumum currency units, $1.00 = 100 units)
max_amount = 10000
# Make the user pay a fee when loading the wallet with a credit card
# Credit card fee percentage (set to 0.0 to disable)
; Make the user pay a extra fee when adding credit to the wallet with a credit card
; The formula for determining the total cost is:
; cost = added_funds + added_funds * fee_percentage / 100 + fee_fixed
; Set these values to 0 to disable the feature.
fee_percentage = 2.9
# Credit card fee fixed (in miniumum currency units, $1.00 = 100 units) (set to 0 to disable)
fee_fixed = 30
# Require the name of the user
; "Shipping" information
; Telegram can ask for extra information when charging the user for a credit card transaction
; Set to yes the data you want to be required
; This data will be stored in the database
name_required = yes
# Require the email of the user
email_required = yes
# Require the phone number of the user
phone_required = yes
# Bot appearance settings
[Appearance]
# Show the full order info to the customers
; Display the full order information to the customers instead of the shortened version
; The full order information includes the order number and the timestamp of the order placement
full_order_info = no
# Exception reporting settings
[Error Reporting]
# Optional sentry token: get the token at https://sentry.io/
; Optional sentry token: get the token at https://sentry.io/ or ask @Steffo for one
; Needed to automatically report bugs found by the users in the code.
sentry_token = https://00000000000000000000000000000000:00000000000000000000000000000000@sentry.io/0000000

View file

@ -19,6 +19,8 @@ else:
class Price:
"""The base class for the prices in greed.
Its int value is in minimum units, while its float and str values are in decimal format.int("""
def __init__(self, value: typing.Union[int, float, str, "Price"]=0):
if isinstance(value, int):
# Keep the value as it is
@ -121,26 +123,31 @@ def catch_telegram_errors(func):
break
# Telegram API didn't answer in time
except telegram.error.TimedOut:
print(f"Timed out while calling {func.__name__}(), retrying in 1 sec...")
time.sleep(1)
print(f"Timed out while calling {func.__name__}(),"
f" retrying in {config['Telegram']['timed_out_pause']} secs...")
time.sleep(int(config["Telegram"]["timed_out_pause"]))
# Telegram is not reachable
except telegram.error.NetworkError:
print(f"Network error while calling {func.__name__}(), retrying in 5 secs...")
time.sleep(5)
print(f"Network error while calling {func.__name__}(),"
f" retrying in {config['Telegram']['error_pause']} secs...")
time.sleep(int(config["Telegram"]["error_pause"]))
# Unknown error
except telegram.error.TelegramError as error:
if error.message.lower() in ["bad gateway", "invalid server response"]:
print(f"Bad Gateway while calling {func.__name__}(), retrying in 5 secs...")
time.sleep(5)
print(f"Bad Gateway while calling {func.__name__}(),"
f" retrying in {config['Telegram']['error_pause']} secs...")
time.sleep(int(config["Telegram"]["error_pause"]))
elif error.message.lower() == "timed out":
print(f"Timed out while calling {func.__name__}(), retrying in 1 sec...")
time.sleep(1)
print(f"Timed out while calling {func.__name__}(),"
f" retrying in {config['Telegram']['timed_out_pause']} secs...")
time.sleep(int(config["Telegram"]["timed_out_pause"]))
else:
print(f"Telegram error while calling {func.__name__}(), retrying in 5 secs...")
print(f"Telegram error while calling {func.__name__}(),"
f" retrying in {config['Telegram']['error_pause']} secs...")
# Send the error to the Sentry server
if sentry_client is not None:
sentry_client.captureException(exc_info=sys.exc_info())
time.sleep(5)
time.sleep(int(config["Telegram"]["error_pause"]))
return result_func
@ -203,4 +210,4 @@ class DuckBot:
def send_document(self, *args, **kwargs):
return self.bot.send_document(*args, **kwargs)
# TODO: add more methods
# More methods can be added here