Пример #1
0
    def send_tweet(self, chat, tweet):
        try:
            self.logger.debug("Sending tweet {} to chat {}...".format(
                tweet.tw_id, chat.chat_id
            ))

            '''
            Use a soft-hyphen to put an invisible link to the first
            image in the tweet, which will then be displayed as preview
            '''
            photo_url = ''
            if tweet.photo_url:
                photo_url = '[\xad](%s)' % tweet.photo_url

            created_dt = utc.localize(tweet.created_at)
            if chat.timezone_name is not None:
                tz = timezone(chat.timezone_name)
                created_dt = created_dt.astimezone(tz)
            created_at = created_dt.strftime('%Y-%m-%d %H:%M:%S %Z')
            self.sendMessage(
                chat_id=chat.chat_id,
                disable_web_page_preview=not photo_url,
                text="""
{link_preview}*{name}* ([@{screen_name}](https://twitter.com/{screen_name})) :
{text}
"""
                    # -- [Enllaç a la piulada original](https://twitter.com/{screen_name}/status/{tw_id})
                    .format(
                    link_preview=photo_url,
                    text=prepare_tweet_text(tweet.text),
                    name=escape_markdown(tweet.name),
                    screen_name=tweet.screen_name,
                    # created_at=created_at,
                    # tw_id=tweet.tw_id,
                ),
                parse_mode=telegram.ParseMode.MARKDOWN)

        except TelegramError as e:
            self.logger.info("Couldn't send tweet {} to chat {}: {}".format(
                tweet.tw_id, chat.chat_id, e.message
            ))

            delet_this = None

            if e.message == 'Bad Request: group chat was migrated to a supergroup chat':
                delet_this = True

            if e.message == "Unauthorized":
                delet_this = True

            if delet_this:
                self.logger.info("Marking chat for deletion")
                chat.delete_soon = True
                chat.save()
Пример #2
0
    def send_tweet(self, chat, tweet):
        try:
            self.logger.debug("Sending tweet {} to chat {}...".format(
                tweet.tw_id, chat.chat_id
            ))

            '''
            Use a soft-hyphen to put an invisible link to the first
            image in the tweet, which will then be displayed as preview
            '''
            photo_url = ''
            if tweet.photo_url:
                photo_url = '[\xad](%s)' % tweet.photo_url

            created_dt = utc.localize(tweet.created_at)
            if chat.timezone_name is not None:
                tz = timezone(chat.timezone_name)
                created_dt = created_dt.astimezone(tz)
            created_at = created_dt.strftime('%Y-%m-%d %H:%M:%S %Z')
            self.sendMessage(
                chat_id=chat.chat_id,
                disable_web_page_preview=not photo_url,
                text="""
{link_preview}*{name}* ([@{screen_name}](https://twitter.com/{screen_name})) at {created_at}:
{text}
-- [Link to this Tweet](https://twitter.com/{screen_name}/status/{tw_id})
"""
                    .format(
                    link_preview=photo_url,
                    text=prepare_tweet_text(tweet.text),
                    name=escape_markdown(tweet.name),
                    screen_name=tweet.screen_name,
                    created_at=created_at,
                    tw_id=tweet.tw_id,
                ),
                parse_mode=telegram.ParseMode.MARKDOWN)

        except TelegramError as e:
            self.logger.info("Couldn't send tweet {} to chat {}: {}".format(
                tweet.tw_id, chat.chat_id, e.message
            ))

            delet_this = None

            if e.message == 'Bad Request: group chat was migrated to a supergroup chat':
                delet_this = True

            if e.message == "Unauthorized":
                delet_this = True

            if delet_this:
                self.logger.info("Marking chat for deletion")
                chat.delete_soon = True
                chat.save()
Пример #3
0
    def send_tweet(self, chat, tweet: Tweet):
        try:
            self.logger.debug("Sending tweet {} to chat {}...".format(
                tweet.id, chat.chat_id))
            '''
            Use a soft-hyphen to put an invisible link to the first
            image in the tweet, which will then be displayed as preview
            '''
            media_url = ''
            if len(tweet.media_list) == 1:
                media_url = '[\xad](%s)' % tweet.media_list[0].url
            elif tweet.link_url:
                media_url = '[\xad](%s)' % tweet.link_url

            self.sendMessage(chat_id=chat.chat_id,
                             disable_web_page_preview=not media_url,
                             text=self.MESSAGE_TEMPLATE.format(
                                 link_preview=media_url,
                                 text=prepare_tweet_text(tweet.text),
                                 name=escape_markdown(tweet.user_name),
                                 screen_name=tweet.user_screen_name,
                                 id=tweet.id,
                             ),
                             parse_mode=telegram.ParseMode.MARKDOWN)

            if len(tweet.media_list) > 1:
                self.sendMediaGroup(
                    chat_id=chat.chat_id,
                    media=map(self.create_input_media, tweet.media_list),
                )

        except TelegramError as e:
            self.logger.info("Couldn't send tweet {} to chat {}: {}".format(
                tweet.id, chat.chat_id, e.message))

            delete_this = None

            if e.message == 'Bad Request: group chat was migrated to a supergroup chat':
                delete_this = True

            if e.message == "Unauthorized":
                delete_this = True

            if delete_this:
                self.logger.info("Marking chat for deletion")
                chat.delete_soon = True
                chat.save()
Пример #4
0
    def send_tweet(self, chat, tweet):
        try:
            self.logger.debug("Sending tweet {} to chat {}...".format(
                tweet.tw_id, chat.chat_id))
            '''
            Use a soft-hyphen to put an invisible link to the first
            image in the tweet, which will then be displayed as preview
            '''
            photo_url = ''
            if tweet.photo_url:
                photo_url = '[\xad](%s)' % tweet.photo_url

            created_dt = utc.localize(tweet.created_at)
            if chat.timezone_name is not None:
                tz = timezone(chat.timezone_name)
                created_dt = created_dt.astimezone(tz)
            created_at = created_dt.strftime('%Y-%m-%d %H:%M:%S %Z')
            for id in [chat.chat_id, '@whale_trades_alerts']:
                text = prepare_tweet_text(tweet.text)
                if text:
                    self.sendMessage(chat_id=id,
                                     disable_web_page_preview=not photo_url,
                                     text=text,
                                     parse_mode=telegram.ParseMode.MARKDOWN)

        except TelegramError as e:
            self.logger.info("Couldn't send tweet {} to chat {}: {}".format(
                tweet.tw_id, chat.chat_id, e.message))

            delet_this = None

            if e.message == 'Bad Request: group chat was migrated to a supergroup chat':
                delet_this = True

            if e.message == "Unauthorized":
                delet_this = True

            if delet_this:
                self.logger.info("Marking chat for deletion")
                chat.delete_soon = True
                chat.save()
Пример #5
0
    def send_tweet(self, chat, tweet):
        try:
            self.logger.debug('Sending tweet {} to chat {}...'.format(
                tweet.tw_id, chat.chat_id))
            '''
			Use a soft-hyphen to put an invisible link to the first
			image in the tweet, which will then be displayed as preview
			'''
            photo_url = ''
            if tweet.photo_url:
                photo_url = '[\xad](%s)' % tweet.photo_url

            created_dt = utc.localize(tweet.created_at)
            if chat.timezone_name is not None:
                tz = timezone(chat.timezone_name)
                created_dt = created_dt.astimezone(tz)
            created_at = created_dt.strftime('%Y-%m-%d %H:%M:%S %Z')
            retweet_text = ''
            if tweet.original_name:
                retweet_text = 'retweeted from *{}* '.format(
                    tweet.original_name)
            self.sendMessage(chat_id=chat.chat_id,
                             disable_web_page_preview=not photo_url,
                             text='''
{link_preview}*{name}* ([@{screen_name}](https://twitter.com/{screen_name})) {retweet_text}at {created_at}:
{text}
— [Link to this Tweet](https://twitter.com/{screen_name}/status/{tw_id})
'''.format(
                                 link_preview=photo_url,
                                 text=prepare_tweet_text(tweet.text),
                                 name=escape_markdown(tweet.name),
                                 screen_name=tweet.screen_name,
                                 created_at=created_at,
                                 tw_id=tweet.tw_id,
                                 retweet_text=retweet_text,
                             ),
                             parse_mode=telegram.ParseMode.MARKDOWN)

            return True

        except TelegramError as e:
            self.logger.info('Couldn\'t send tweet {} to chat {}: {}'.format(
                tweet.tw_id, chat.chat_id, e.message))
            #self.logger.debug('\ttweet text: {}'.format(prepare_tweet_text(tweet.text)))

            delet_this = None

            if e.message == 'Forbidden: bot was blocked by the user':
                delet_this = True

            if e.message == 'Bad Request: group chat was migrated to a supergroup chat':
                delet_this = True

            if e.message == 'Unauthorized':
                delet_this = True

            if delet_this:
                self.logger.info('Marking chat for deletion')
                chat.delete_soon = True
                chat.save()

            return False
Пример #6
0
    def send_tweet(self, chat, tweet, sub_kind):
        try:
            if sub_kind == 1:
                if tweet.text[0:1] == 'RT':
                    return
            elif sub_kind == 2:
                if tweet.text[0] == '@':
                    return
            elif sub_kind == 3:
                if len(eval(tweet.photo_url)) == 0:
                    return

            self.logger.debug("Sending tweet {} to chat {}...".format(
                tweet.tw_id, chat.chat_id))
            '''
            Use a soft-hyphen to put an invisible link to the first
            image in the tweet, which will then be displayed as preview
            '''
            photo_url = ''
            video_url = ''

            if len(eval(tweet.photo_url)) != 0:
                photo_url = '[\xad](%s)' % eval(tweet.photo_url)[0]
            if tweet.video_url:
                video_url = tweet.video_url

            created_dt = utc.localize(tweet.created_at)
            #created_dt = tweet.created_at
            if chat.timezone_name is not None:
                tz = timezone(chat.timezone_name)
                created_dt = created_dt.astimezone(tz)
            created_at = created_dt.strftime('%Y-%m-%d %H:%M:%S %Z')
            self.sendMessage(chat_id=chat.chat_id,
                             disable_web_page_preview=not photo_url,
                             text="""
{link_preview}*{name}* ([@{screen_name}](https://twitter.com/{screen_name})) at {created_at}:
{text}
-- [Link to this Tweet](https://twitter.com/{screen_name}/status/{tw_id})
""".format(
                                 link_preview=photo_url,
                                 text=prepare_tweet_text(tweet.text),
                                 name=escape_markdown(tweet.name),
                                 screen_name=tweet.screen_name,
                                 created_at=created_at,
                                 tw_id=tweet.tw_id,
                             ),
                             parse_mode=telegram.ParseMode.MARKDOWN)

            if video_url:
                try:
                    self.sendVideo(chat_id=chat.chat_id, video=tweet.video_url)
                except TelegramError as e:
                    self.logger.warning(
                        "Sending tweet {} video failed, video url is {}, error is {}"
                        .format(tweet.tw_id, tweet.video_url, e))
                    file = open("video_url.txt", "a")
                    file.write('\n')
                    file.write(str(video_url))
                    file.write('\n')
                    file.write(str(tweet.video_url))
                    file.close()
            else:
                try:
                    if photo_url:
                        for img in eval(tweet.photo_url):
                            self.sendPhoto(chat_id=chat.chat_id, photo=img)
                except TelegramError as e:
                    self.logger.warning(
                        "Sending tweet {} img failed, img url is {}, error is {}"
                        .format(tweet.tw_id, tweet.photo_url, e))
                    file = open("photo_url.txt", "a")
                    file.write('\n')
                    file.write(str(photo_url))
                    file.write('\n')
                    file.write(str(tweet.photo_url))
                    file.close()

        except TelegramError as e:
            self.logger.info("Couldn't send tweet {} to chat {}: {}".format(
                tweet.tw_id, chat.chat_id, e.message))

            delet_this = None

            if e.message == 'Bad Request: group chat was migrated to a supergroup chat':
                delet_this = True

            if e.message == "Unauthorized":
                delet_this = True

            if delet_this:
                self.logger.info("Marking chat for deletion")
                chat.delete_soon = True
                chat.save()