def try_delete_channel(bot: Bot, candidate: str, channel_model_class): if candidate[0] != "@": candidate = "@" + candidate try: channel = bot.get_chat(chat_id=candidate) except err.TelegramError as e: return False if channel.type != "channel": return False session = db.Session() if session.query(channel_model_class).filter_by( id=channel.id).count() == 0: # already deleted session.close() return False if channel_model_class is ChannelToSubscribe: session.query(channel_model_class).get(channel.id).enabled = False else: session.query(channel_model_class).filter_by(id=channel.id).delete() session.commit() session.close() return True
def try_add_channel(bot: Bot, candidate: str, channel_model_class): if candidate[0] != "@": candidate = "@" + candidate try: channel = bot.get_chat(chat_id=candidate) except err.TelegramError: return False if channel.type != "channel": return False chat_member = bot.get_chat_member(chat_id=candidate, user_id=bot.id) if chat_member.status not in (chat_member.ADMINISTRATOR, chat_member.CREATOR): return False session = db.Session() if session.query(channel_model_class).filter_by(id=channel.id).count() > 0: if channel_model_class is ChannelToSubscribe: session.query(channel_model_class).get(channel.id).enabled = True session.commit() session.close() return True # already exists session.close() return False new_channel = channel_model_class(id=channel.id) session.add(new_channel) session.commit() session.close() return True