2022-05-02 15:04:54 +00:00
|
|
|
"""
|
|
|
|
script for telegram bot and its functions
|
|
|
|
"""
|
|
|
|
__author__ = "Florian Kellermann, Linus Eickhoff, Florian Kaiser"
|
|
|
|
__date__ = "02.05.2022"
|
2022-05-02 15:22:50 +00:00
|
|
|
__version__ = "0.0.1"
|
2022-05-02 15:04:54 +00:00
|
|
|
__license__ = "None"
|
|
|
|
|
|
|
|
# main bot at http://t.me/guess_the_price_bot
|
|
|
|
# debug bot at http://t.me/amazondebug_bot
|
|
|
|
|
2022-05-02 15:07:28 +00:00
|
|
|
import logging
|
2022-05-02 15:04:54 +00:00
|
|
|
import os
|
|
|
|
import sys
|
|
|
|
|
2022-05-02 15:22:50 +00:00
|
|
|
import telebot
|
|
|
|
from dotenv import load_dotenv
|
|
|
|
from telebot import types
|
2022-05-02 15:58:56 +00:00
|
|
|
# from apscheduler.schedulers.background import BackgroundScheduler
|
2022-05-02 15:22:50 +00:00
|
|
|
|
2022-05-02 16:03:13 +00:00
|
|
|
# from db import User, session
|
2022-05-02 15:22:50 +00:00
|
|
|
|
|
|
|
load_dotenv(dotenv_path='.env') # load environment variables
|
2022-05-02 15:04:54 +00:00
|
|
|
|
2022-05-02 15:46:04 +00:00
|
|
|
BOT_VERSION = "0.0.1" # version of bot
|
2022-05-02 15:04:54 +00:00
|
|
|
|
|
|
|
bot = telebot.TeleBot(os.getenv('BOT_API_KEY'))
|
|
|
|
|
2022-05-02 15:22:50 +00:00
|
|
|
|
|
|
|
@bot.message_handler(commands=['start', 'Start'])
|
2022-05-02 15:04:54 +00:00
|
|
|
def send_start(message):
|
2022-05-02 16:15:04 +00:00
|
|
|
"""send start message to user
|
2022-05-02 15:04:54 +00:00
|
|
|
|
2022-05-02 16:15:04 +00:00
|
|
|
Args:
|
|
|
|
message (Message): message from telegram user, here /start
|
2022-05-02 15:04:54 +00:00
|
|
|
"""
|
2022-05-02 16:45:32 +00:00
|
|
|
bot.reply_to(message, ( "Welcome to the game...\n"
|
2022-05-02 16:47:46 +00:00
|
|
|
"To start set a name by typing /changename\n"
|
2022-05-02 16:45:32 +00:00
|
|
|
"Type /gameinfo for information about GuessThePrice\n"
|
|
|
|
"Type /help for an overview of all commands\n"))
|
2022-05-02 15:22:50 +00:00
|
|
|
|
|
|
|
|
2022-05-02 15:07:28 +00:00
|
|
|
telebot.logger.setLevel(logging.DEBUG)
|
2022-05-02 15:22:50 +00:00
|
|
|
|
|
|
|
|
2022-05-02 16:15:04 +00:00
|
|
|
@bot.message_handler(commands=['help', 'Help'])
|
|
|
|
def send_help(message):
|
|
|
|
"""send all commands to user
|
|
|
|
|
|
|
|
Args:
|
|
|
|
message (Message): Message from telegram user, here /help
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
None: None
|
|
|
|
|
|
|
|
Raises:
|
|
|
|
None: None
|
|
|
|
|
|
|
|
"""
|
2022-05-02 16:33:08 +00:00
|
|
|
help_message = ("/me get my user info\n"
|
|
|
|
"/help get this help message\n"
|
|
|
|
"/gameinfo get game info\n"
|
|
|
|
"/scoreboard get scoreboard\n"
|
|
|
|
"/changename change your name\n"
|
|
|
|
"/challenge get todays challenge\n"
|
|
|
|
"/guess make guess for today")
|
|
|
|
bot.reply_to(message, help_message, parse_mode='MARKDOWN')
|
|
|
|
|
|
|
|
|
2022-05-02 16:45:32 +00:00
|
|
|
@bot.message_handler(commands=['gameinfo', 'Gameinfo'])
|
|
|
|
def send_gameinfo(message):
|
|
|
|
"""send game info to user
|
|
|
|
|
|
|
|
Args:
|
|
|
|
message (Message): Message from telegram user, here /gameinfo
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
None: None
|
|
|
|
|
|
|
|
Raises:
|
|
|
|
None: None
|
|
|
|
|
|
|
|
"""
|
|
|
|
gameinfo_message = ("GuessThePrice is a game where you have to guess\n"
|
|
|
|
"the price of an amazon product.\n"
|
|
|
|
"Start by setting your name with /changename\n"
|
|
|
|
"You can get a new challenge every day.\n"
|
|
|
|
"You are informed when a new challenge is available.\n"
|
|
|
|
"To see the challenge type /challenge\n"
|
|
|
|
"To guess the price type /guess\n"
|
|
|
|
"At 22:00 pm the scores and answer will be shown\n")
|
|
|
|
bot.reply_to(message, gameinfo_message, parse_mode='MARKDOWN')
|
|
|
|
|
|
|
|
|
2022-05-02 16:33:08 +00:00
|
|
|
# inline prints for debugging
|
|
|
|
@bot.inline_handler(lambda query: query.query == 'text')
|
2022-05-02 15:04:54 +00:00
|
|
|
def query_text(inline_query):
|
2022-05-02 16:17:07 +00:00
|
|
|
"""inline query handler for debugging
|
2022-05-02 15:04:54 +00:00
|
|
|
|
2022-05-02 16:17:07 +00:00
|
|
|
Args:
|
|
|
|
inline_query (InlineQuery): inline query from telegram user
|
2022-05-02 16:33:08 +00:00
|
|
|
|
2022-05-02 16:17:07 +00:00
|
|
|
Returns:
|
|
|
|
None: None
|
2022-05-02 16:33:08 +00:00
|
|
|
|
2022-05-02 16:17:07 +00:00
|
|
|
Raises:
|
|
|
|
None: None
|
2022-05-02 15:04:54 +00:00
|
|
|
"""
|
|
|
|
try:
|
2022-05-02 16:33:08 +00:00
|
|
|
r = types.InlineQueryResultArticle('1', 'Result1', types.InputTextMessageContent(
|
|
|
|
'hi')) # pylint: disable=invalid-name
|
|
|
|
r2 = types.InlineQueryResultArticle(
|
|
|
|
'2', 'Result2', types.InputTextMessageContent('hi')) # pylint: disable=invalid-name
|
2022-05-02 15:04:54 +00:00
|
|
|
bot.answer_inline_query(inline_query.id, [r, r2])
|
2022-05-02 16:33:08 +00:00
|
|
|
except Exception as e: # pylint: disable=broad-except, invalid-name
|
2022-05-02 15:04:54 +00:00
|
|
|
print(e)
|
|
|
|
|
2022-05-02 15:22:50 +00:00
|
|
|
|
2022-05-02 15:04:54 +00:00
|
|
|
def main_loop():
|
2022-05-02 16:12:06 +00:00
|
|
|
# nur zum ärgern
|
2022-05-02 16:17:07 +00:00
|
|
|
"""main loop for bot
|
2022-05-02 15:04:54 +00:00
|
|
|
|
2022-05-02 16:17:07 +00:00
|
|
|
Args:
|
|
|
|
None: None
|
2022-05-02 16:33:08 +00:00
|
|
|
|
2022-05-02 16:17:07 +00:00
|
|
|
Returns:
|
|
|
|
None: None
|
2022-05-02 16:33:08 +00:00
|
|
|
|
2022-05-02 16:17:07 +00:00
|
|
|
Raises:
|
|
|
|
None: None
|
2022-05-02 15:04:54 +00:00
|
|
|
"""
|
|
|
|
bot.infinity_polling()
|
|
|
|
|
2022-05-02 15:22:50 +00:00
|
|
|
|
2022-05-02 15:04:54 +00:00
|
|
|
if __name__ == '__main__':
|
|
|
|
try:
|
|
|
|
main_loop()
|
|
|
|
except KeyboardInterrupt:
|
|
|
|
print('\nExiting by user request.\n')
|
2022-05-02 15:22:50 +00:00
|
|
|
sys.exit(0)
|