tg-sync

git clone git://archive.git.mtrnord.blog/Nordgedanken/tg-sync.git
Log | Files | Refs | README

Htelegram.py (3129B)


      1 import logging
      2 import telegram.ext
      3 from telegram.ext import Filters
      4 
      5 logger = logging.getLogger(__name__)
      6 
      7 from bot.helper import sc, updater, memory_class
      8 from bot.Hcommand import register_command
      9 
     10 
     11 class Telegram:
     12     def __init__(self):
     13         self.sc = sc
     14         self.updater = updater
     15         self.memory = memory_class
     16 
     17     def Hsyc(self, bot, update):
     18         try:
     19             tg2sl = self.memory.get_by_path(['tg_sl-sync'])['tg2sl']
     20         except Exception as e:
     21             traceback.print_exc()
     22             update.message.reply_text('Failed to get memory. Please contact Admin!')
     23         try:
     24             if str(update.message.chat_id) in tg2sl:
     25                 response = self.sc.api_call(
     26                   "chat.postMessage",
     27                   channel=tg2sl[str(update.message.chat_id)],
     28                   text=update.message.text,
     29                   username="{firstname} {lastname} ({synced_chat})".format(firstname=update.message.from_user['first_name'], lastname=update.message.from_user['last_name'], synced_chat=update.message['chat']['title']),
     30                   icon_url=str(bot.getFile(file_id=update.message.from_user.get_profile_photos(limit=1)['photos'][0][0]['file_id'])['file_path'])
     31                 )
     32                 print("response: {}".format(response))
     33         except Exception as e:
     34             traceback.print_exc()
     35             update.message.reply_text('Failed to sync to chat. Please contact Admin!')
     36         print(update.message.text)
     37 
     38     # @register_command('slacksync')
     39     def Cslacksync(self, bot, update):
     40         print('got it')
     41         params = update.message.text.split()
     42         logger.debug(params[1])
     43 
     44         try:
     45             tg2sl = self.memory.get_by_path(['tg_sl-sync'])['tg2sl']
     46             sl2tg = self.memory.get_by_path(['tg_sl-sync'])['sl2tg']
     47         except Exception as e:
     48             traceback.print_exc()
     49             update.message.reply_text('Failed to get memory. Please contact Admin!')
     50 
     51             update.message.reply_text(tg2sl)
     52 
     53         if update.message.chat_id in tg2sl:
     54             update.message.reply_text('This channel is already synced!')
     55         else:
     56             logger.debug("got sync request...")
     57             try:
     58                 tg2sl[str(update.message.chat_id)] = params[1]
     59                 sl2tg[str(params[1])] = str(update.message.chat_id)
     60                 new_memory = {'tg2sl': tg2sl, 'sl2tg': sl2tg}
     61                 self.memory.set_by_path(['tg_sl-sync'], new_memory)
     62                 self.memory.save()
     63                 update.message.reply_text('Saved sync!')
     64                 logger.debug("sync saved")
     65             except Exception as e:
     66                 traceback.print_exc()
     67                 update.message.reply_text('Failed to save sync!')
     68 
     69     def telegram_init(self):
     70         try:
     71             logger.info("Telegram starting...")
     72             self.updater.dispatcher.add_handler(telegram.ext.MessageHandler(Filters.text, self.Hsyc))
     73             self.updater.dispatcher.add_handler(telegram.ext.CommandHandler('slacksync', self.Cslacksync))
     74             self.updater.start_polling()
     75         except KeyboardInterrupt:
     76             sys.exit()