def finish(self): # set last update self.channel.last_update = datetime.date.today() self._save_channel() new_bots = Bot.select_new_bots() if not self.silent and len(new_bots) > 0: self.notify_admin("Sending notifications to subscribers...") subscribers = Notifications.select().where(Notifications.enabled == True) notification_count = 0 for sub in subscribers: try: util.send_md_message(self.bot, sub.chat_id, messages.BOTLIST_UPDATE_NOTIFICATION.format( n_bots=len(new_bots), new_bots=Bot.get_new_bots_markdown())) notification_count += 1 sub.last_notification = datetime.date.today() sub.save() except TelegramError: pass self.sent['notifications'] = "Notifications sent to {} users.".format( notification_count) changes_made = len(self.sent) > 1 or len(self.sent['category']) > 0 if changes_made: text = util.success('{}{}'.format('BotList updated successfully:\n\n', mdformat.results_list(self.sent))) else: text = mdformat.none_action("No changes were necessary.") log.info(self.sent) self.bot.formatter.send_or_edit(self.chat_id, text, to_edit=self.message_id)
def _new_bots_text(): new_bots = Bot.select_new_bots() if len(new_bots) > 0: txt = "Fresh new bots since the last update 💙:\n\n{}".format( Bot.get_new_bots_markdown()) else: txt = 'No new bots available.' return txt
def update_new_bots_list(self): text = self._read_file(self.NEW_BOTS_FILE) # insert spaces and the name of the bot new_bots_joined = Bot.get_new_bots_markdown() text = text.format(new_bots_joined) msg = self.send_or_edit(text, self.channel.new_bots_mid) self.sent['new_bots_list'] = "List of new bots sent" if msg: self.channel.new_bots_mid = msg.message_id self._save_channel()