Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

bot.py 7.7 KiB

il y a 8 mois
il y a 8 mois
il y a 8 mois
il y a 8 mois
il y a 8 mois
il y a 8 mois
il y a 8 mois
il y a 8 mois
il y a 8 mois
il y a 8 mois
il y a 8 mois
il y a 8 mois
il y a 8 mois
il y a 8 mois
il y a 8 mois
il y a 8 mois
il y a 8 mois
il y a 8 mois
il y a 8 mois
il y a 8 mois
il y a 8 mois
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # This program is dedicated to the public domain under the CC0 license.
  4. # Telegram - Betaseries
  5. import logging
  6. import requests
  7. import json
  8. from telegram import InlineKeyboardButton, InlineKeyboardMarkup
  9. from telegram.ext import Updater, CommandHandler, CallbackQueryHandler
  10. from config import config, series
  11. from betaseries import login_beta, get_title_only, to_see, seen, get_episode_code
  12. from telegram_api import send_message
  13. # Activer / Désactiver le debuggage {Projet : pas encore utilisé}
  14. DEBUG = True
  15. # Recupération de la configuration dans config.py
  16. client_id = config['client_id']
  17. login= config['login']
  18. password = config['password']
  19. user_id = config['user_id']
  20. token_bot = config['token_bot']
  21. #Debug only -> permet d'afficher les erreurs sur la console.
  22. logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
  23. level=logging.INFO)
  24. logger = logging.getLogger(__name__)
  25. def start(update, context):
  26. send_message('Bonjour Sensei. !')
  27. send_message('Je suis ici pour te servir, malgré ça : je reste en Beta ! Soyez doux.')
  28. return
  29. def ping(update, context):
  30. send_message("Pong!")
  31. return
  32. def init(update, context):
  33. update.message.reply_text("Tentative de connexion à Betaseries...")
  34. data = login_beta()
  35. if data == False :
  36. error = "Impossible d'interroger l'API\n Code:" + str(request.status_code)
  37. update.message.reply_text(error)
  38. return
  39. #Si la fonction ne renvoie pas "False", on considère que le token est bon !
  40. betauser = data
  41. message = "Token utilise pour Betaseries : " + betauser
  42. # à editer : nous utiliserons plutot la librairie de telegram lorsque nous répondons à une commande. l'API sera utile pour le script
  43. API_Message = 'https://api.telegram.org/'
  44. API_Message += 'bot' + token_bot + '/sendMessage?chat_id=' + user_id + '&text='
  45. #
  46. Notification = API_Message + "Connection Reussie ! "
  47. request = requests.post(Notification)
  48. Notification = API_Message + " Votre Token sur Betaseries: " + betauser
  49. request = requests.post(Notification)
  50. update.message.reply_text("Vous pouvez maintenant utiliser le bot !")
  51. print("Token Betaseries :", betauser)
  52. return
  53. def repeat(update, context):
  54. message = ''
  55. user = update.message.from_user
  56. if DEBUG == True :
  57. print('Pseudo du compte : {} ID: {} '.format(user['username'], user['id']))
  58. if len(context.args) > 1 :
  59. for i in range(len(context.args)):
  60. mot = str(context.args[i]) + " "
  61. message += mot
  62. message = message[:-1]
  63. else :
  64. message = context.args[0]
  65. if DEBUG == True :
  66. print("phrase envoyée : ", message)
  67. if message == "Cinabre est parfait":
  68. update.message.reply_text("J'avoue !")
  69. return
  70. update.message.reply_text(message)
  71. return
  72. def latest(update, context):
  73. message = 'à voir : \n'
  74. for i in range(len(series)):
  75. thetvdb_id = series[i]
  76. episode = to_see(thetvdb_id)
  77. if episode != False:
  78. message += '- ' + str(episode)
  79. send_message(message)
  80. def liste(update, context):
  81. message = ''
  82. message = u'Liste des séries surveillées : ' + '\n'
  83. for i in range(len(series)):
  84. message += '- ' + get_title_only(series[i]) + '\n'
  85. message += '\n' + "Bon Visionnage !"
  86. send_message(message)
  87. def ive_seen(update, context):
  88. if type(series) == str :
  89. file_path = 'latest/' + series + '.json'
  90. print(file_path)
  91. with open(file_path) as json_file:
  92. data = json.load(json_file)
  93. keyboard = [[InlineKeyboardButton(data['serie_title'] + '|' + 'S' + str(data['season ']) + 'E' + str(data['episode']), callback_data='1')]]
  94. reply_markup = InlineKeyboardMarkup(keyboard)
  95. update.message.reply_text('Vous avez vu :', reply_markup=reply_markup)
  96. return
  97. else :
  98. if len(series) == 2 :
  99. keyboard = [[InlineKeyboardButton(get_title_only(series[0]), callback_data='1'),
  100. InlineKeyboardButton(get_title_only(series[1]), callback_data='2')]]
  101. if len(series) == 3 :
  102. keyboard = [
  103. [InlineKeyboardButton(get_title_only(series[0]), callback_data='1'), InlineKeyboardButton(get_title_only(series[1]), callback_data='2')],
  104. [InlineKeyboardButton(get_title_only(series[2]), callback_data='3')]
  105. ]
  106. if len(series) == 4 :
  107. keyboard = [
  108. [InlineKeyboardButton(get_title_only(series[0]), callback_data='1'), InlineKeyboardButton(get_title_only(series[1]), callback_data='2') ],
  109. [InlineKeyboardButton(get_title_only(series[2]), callback_data='3'), InlineKeyboardButton(get_title_only(series[3]), callback_data='4') ]
  110. ]
  111. if len(series) == 5 :
  112. keyboard = [
  113. [ InlineKeyboardButton(get_title_only(series[0]), callback_data='1'), InlineKeyboardButton(get_title_only(series[1]), callback_data='2')],
  114. [ InlineKeyboardButton(get_title_only(series[2]), callback_data='3'), InlineKeyboardButton(get_title_only(series[3]), callback_data='4')],
  115. [ InlineKeyboardButton(get_title_only(series[4]), callback_data='5')]
  116. ]
  117. reply_markup = InlineKeyboardMarkup(keyboard)
  118. update.message.reply_text('Selectionnez une reponse', reply_markup=reply_markup)
  119. return
  120. def button(update, context):
  121. query = update.callback_query
  122. query.answer()
  123. print(type(query['data']))
  124. # Si jamais l'utilisateur fait le 1er choix, on vérifie si jamais 'series' n'est pas un str (qui serait donc le cas ou l'utilisateur n'a qu'une serie
  125. if query['data'] == u'1' :
  126. if type(series) == str :
  127. seen(series)
  128. episode = get_title_only(series) + ' | ' + get_episode_code(series)
  129. query.edit_message_text(text="Choix de la series : {}".format(episode))
  130. return
  131. else :
  132. seen(series[0])
  133. episode = get_title_only(series[0]) + ' | ' + get_episode_code(series[0])
  134. query.edit_message_text(text="Choix de la series : {}".format(episode))
  135. return
  136. number = int(query['data']) - 1
  137. query.edit_message_text(text="Choix de la series : ".format(get_title_only(number) ))
  138. # query.edit_message_text(data['serie_title'] + '|' + 'S' + str(data['season ']) + 'E' + str(data['episode'] ))
  139. #query.edit_message_text(text="Selected option: {}".format(query.data))
  140. def main():
  141. updater = Updater(token_bot, use_context=True)
  142. print("Bot connecté")
  143. dp = updater.dispatcher
  144. dp.add_handler(CommandHandler("start", start))
  145. dp.add_handler(CommandHandler("help", start))
  146. dp.add_handler(CommandHandler("ping", ping))
  147. dp.add_handler(CommandHandler("repeat", repeat,
  148. pass_args=True,
  149. pass_job_queue=True,
  150. pass_chat_data=True))
  151. dp.add_handler(CommandHandler("initialisation", init,
  152. pass_args=True,
  153. pass_job_queue=True,
  154. pass_chat_data=True))
  155. dp.add_handler(CommandHandler("liste", liste))
  156. dp.add_handler(CommandHandler("latest", latest))
  157. dp.add_handler(CommandHandler("seen", ive_seen))
  158. updater.dispatcher.add_handler(CallbackQueryHandler(button))
  159. updater.start_polling()
  160. updater.idle()
  161. if __name__ == '__main__':
  162. main()