|
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- # This program is dedicated to the public domain under the CC0 license.
- # Telegram - Betaseries
- import logging
- import requests
- import json
- from telegram import InlineKeyboardButton, InlineKeyboardMarkup
- from telegram.ext import Updater, CommandHandler, CallbackQueryHandler
- from config import config, series
- from betaseries import login_beta, get_title_only, to_see, seen
- from telegram_api import send_message
-
- # Activer / Désactiver le debuggage {Projet : pas encore utilisé}
- DEBUG = True
-
- # Recupération de la configuration dans config.py
- client_id = config['client_id']
- login= config['login']
- password = config['password']
- user_id = config['user_id']
- token_bot = config['token_bot']
-
-
- #Debug only -> permet d'afficher les erreurs sur la console.
- logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
- level=logging.INFO)
- logger = logging.getLogger(__name__)
-
-
-
- def start(update, context):
- send_message('Bonjour Sensei. !')
- send_message('Je suis ici pour te servir, malgré ça : je reste en Beta ! Soyez doux.')
- return
-
- def ping(update, context):
- send_message("Pong!")
- return
-
- def init(update, context):
- update.message.reply_text("Tentative de connexion à Betaseries...")
- data = login_beta()
- if data == False :
- error = "Impossible d'interroger l'API\n Code:" + str(request.status_code)
- update.message.reply_text(error)
- return
- #Si la fonction ne renvoie pas "False", on considère que le token est bon !
-
- betauser = data
- message = "Token utilise pour Betaseries : " + betauser
-
- # à editer : nous utiliserons plutot la librairie de telegram lorsque nous répondons à une commande. l'API sera utile pour le script
- API_Message = 'https://api.telegram.org/'
- API_Message += 'bot' + token_bot + '/sendMessage?chat_id=' + user_id + '&text='
- #
-
-
- Notification = API_Message + "Connection Reussie ! "
- request = requests.post(Notification)
-
- Notification = API_Message + " Votre Token sur Betaseries: " + betauser
- request = requests.post(Notification)
- update.message.reply_text("Vous pouvez maintenant utiliser le bot !")
- print("Token Betaseries :", betauser)
- return
-
-
- def repeat(update, context):
- message = ''
- user = update.message.from_user
-
- if DEBUG == True :
- print('Pseudo du compte : {} ID: {} '.format(user['username'], user['id']))
-
- if len(context.args) > 1 :
- for i in range(len(context.args)):
- mot = str(context.args[i]) + " "
- message += mot
- message = message[:-1]
- else :
- message = context.args[0]
- if DEBUG == True :
- print("phrase envoyée : ", message)
-
-
- if message == "Cinabre est parfait":
- update.message.reply_text("J'avoue !")
- return
-
- update.message.reply_text(message)
- return
-
-
- def check_seen(update, context):
- message = 'à voir \n'
- for i in range(len(series)):
- thetvdb_id = series[i]
- message += '- ' + str(to_see(thetvdb_id))
- send_message(message)
-
-
- def liste(update, context):
- message = ''
- message = u'Liste des séries surveillées : ' + '\n'
- for i in range(len(series)):
- message += '- ' + get_title_only(series[i]) + '\n'
-
- message += '\n' + "Bon Visionnage !"
- send_message(message)
-
-
-
- def coding(update, context):
- if type(series) == str :
- file_path = 'latest/' + series + '.json'
- print(file_path)
- with open(file_path) as json_file:
- data = json.load(json_file)
- # message = u'Episode que vous allez marquer comme vu : ' + data['serie_title'] + ' - S' + str(data['season ']) + 'E' + str(data['episode'])
- # send_message(message)
-
- keyboard = [[InlineKeyboardButton(data['serie_title'] + '|' + 'S' + str(data['season ']) + 'E' + str(data['episode']), callback_data='1')]]
- reply_markup = InlineKeyboardMarkup(keyboard)
- update.message.reply_text('Vous avez vu :', reply_markup=reply_markup)
- return
- else :
- keyboard = [[InlineKeyboardButton("Option 1", callback_data='1'),
- InlineKeyboardButton("Option 2", callback_data='2'),
- InlineKeyboardButton("Option 3", callback_data='3')],
- [InlineKeyboardButton("Option 4", callback_data='4')] ]
-
- reply_markup = InlineKeyboardMarkup(keyboard)
- update.message.reply_text('Selectionnez une reponse', reply_markup=reply_markup)
-
- return
-
-
-
-
- def button(update, context):
- query = update.callback_query
- query.answer()
- print(type(query['data']))
- if query['data'] == u'1' :
- if type(series) == str :
- seen(series)
-
-
- query.edit_message_text(text="Selected option: {}".format(query.data))
-
-
-
- def main():
- updater = Updater(token_bot, use_context=True)
- print("Bot connecté")
- dp = updater.dispatcher
-
- dp.add_handler(CommandHandler("start", start))
- dp.add_handler(CommandHandler("help", start))
-
-
- dp.add_handler(CommandHandler("ping", ping))
-
- dp.add_handler(CommandHandler("repeat", repeat,
- pass_args=True,
- pass_job_queue=True,
- pass_chat_data=True))
-
- dp.add_handler(CommandHandler("initialisation", init,
- pass_args=True,
- pass_job_queue=True,
- pass_chat_data=True))
-
- dp.add_handler(CommandHandler("liste", liste))
-
- dp.add_handler(CommandHandler("check", check_seen))
-
- dp.add_handler(CommandHandler("code", coding))
- updater.dispatcher.add_handler(CallbackQueryHandler(button))
-
-
- updater.start_polling()
- updater.idle()
-
-
- if __name__ == '__main__':
- main()
|