Esempio n. 1
0
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
Esempio n. 2
0
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