Exemple #1
0
def get_chat_members_count(client: Client, cid: int) -> Optional[int]:
    # Get the number of members in a chat
    result = None

    try:
        result = client.get_chat_members_count(chat_id=cid)
    except FloodWait as e:
        raise e
    except Exception as e:
        logger.warning(f"Get chat members count in {cid} error: {e}", exc_info=True)

    return result
# Get the count of Members in a chat and check how many of those have sent a message
# in the last x messages. Change the limit variable to check more messages.

from pyrogram import Client

app = Client("my_account")

chat = "pyrogramchat"
people = {}

with app:
    total = app.get_chat_members_count(chat)
    for msg in app.iter_history(chat, limit=1000):
        if msg.from_user and not msg.from_user.is_bot:
            people[msg.from_user.id] = msg.from_user.first_name

print(len(people) / total)
Exemple #3
0
    for utente in giocatori:
        giocatori[utente]["conteggioSettimanale"] = 0

f = open("programma.txt")
programma = f.read()
if programma == "True":
    print("Programmazione Attiva")
    schedule.every().day.at("15:00").do(messaggioSapiens).tag("sapiensTag")
    schedule.every().day.at("20:00").do(messaggioSapiens).tag("sapiensTag")
f.close()

schedule.every().monday.do(conteggioSettimanale)


def pubblicit├а():
    membri = app.get_chat_members_count("sapiens3")
    messaggio = "#cercosponsor\n"+"­ЪДа ­ЪДа ­ЪДа ­ЪДа­ЪДа­ЪДа\n"+"­ЪДа @sapiens3\n"+f"­ЪДа ­ЪЉЦ {membri}\n"+"­ЪДа ­ЪЉђ 4000 / 24h\n"+"­ЪДа ­ЪДа ­ЪДа ­ЪДа­ЪДа ­ЪДа\n"+ "РЏћ№ИЈClickbait\n"+"\n\n"+"#vendosponsor\n"+"­ЪЋњ 15.01 - 20.01\n"+"­Ъњх 7Рѓг\n"+"­ЪЋњ 21.00 - 10.00\n"+"­Ъњх 5Рѓг\n"+"\n"+"РЮЌ№ИЈ @SponsorBot РЮЌ№ИЈ\n"+"\n"+"Рё╣№ИЈ @Sapiens3UserBot"
    for gruppo in gruppi:
        try:
            app.send_message(gruppo,messaggio)
        except RPCError as e:
            print(e)
            continue
def prenotazioneFly():
    messaggioListaFly = " ­ЪДаCURIOSIT├ђ E SCIENZA ­ЪДа - @Sapiens3"
    for lista in liste:
        try:
            app.send_message(lista, messaggioListaFly)
        except RPCError as e:
            print(e)
            continue
Exemple #4
0
def calc_dice_reward(app: Client, user, chatmember, dice, chat_id):
    details = {}
    is_blacklisted = Exceptions.objects.filter(user=user).exists()
    details['blacklisted'] = is_blacklisted
    if is_blacklisted:
        return 0, details
    now = datetime.utcnow()
    details['today'] = today = now.date()
    try:
        details['members'] = members = app.get_chat_members_count(chat_id)
    except ValueError:
        details['members'] = members = 2
    user_agg = get_user_won_by_chats(user, today, is_local=False)
    user_won_day = float(sum(row['chat_sum_user']
                             for row in user_agg)) if user_agg else 0
    is_chat_win = chat_id in [row['chat_id'] for row in user_agg]
    details['user_won_day'] = user_won_day
    details['is_chat_win'] = is_chat_win

    chat_stat = get_total_won_by_chats(today, is_local=False)
    details['chat_won_day'] = chat_won_day = float(chat_stat.get(chat_id, 0))
    details['total_won_day'] = total_won_day = float(sum(chat_stat.values()))

    user_settings = Tools.objects.get(pk=1)
    details['user_limit_day'] = user_limit_day = float(
        user_settings.user_limit_day)
    details['chat_limit_day'] = chat_limit_day = float(
        user_settings.chat_limit_day)
    details['total_limit_day'] = total_limit_day = float(
        user_settings.total_limit_day)

    chat_size_multiplier = members / user_settings.members_limit
    details[
        'chat_size_multiplier'] = 1 if chat_size_multiplier > 1 else chat_size_multiplier
    details[
        'user_limit_multiplier'] = user_limit_multiplier = 1 - user_won_day / user_limit_day
    details[
        'chat_limit_multiplier'] = chat_limit_multiplier = 1 - chat_won_day / chat_limit_day
    details[
        'total_limit_multiplier'] = total_limit_multiplier = 1 - total_won_day / total_limit_day

    dice_multiplier = dice - 1
    if dice_multiplier < 0:
        dice_multiplier = 0
    if dice_multiplier > 5:
        dice_multiplier = 5
    details['dice'] = dice
    details['dice_multiplier'] = dice_multiplier

    user_reputation = 0
    if chatmember:
        user_reputation = wilson_score(chatmember.upvotes,
                                       chatmember.downvotes)
        details['user_upvotes'] = chatmember.upvotes
        details['user_downvotes'] = chatmember.downvotes
        details['user_reply_count'] = chatmember.reply_count
        details['user_reputation'] = user_reputation
        details['user_lifetime'] = (now -
                                    chatmember.joined_date).total_seconds()

    if is_chat_win:
        return 0, details

    if chat_size_multiplier < 0 or user_limit_multiplier < 0 or chat_limit_multiplier < 0 or total_limit_multiplier < 0:
        return 0, details

    reward = dice_multiplier * chat_size_multiplier * \
             user_limit_multiplier * chat_limit_multiplier * \
             total_limit_multiplier * (user_reputation + 1)

    if reward + user_won_day > user_limit_day:
        reward = user_limit_day - user_won_day

    reward_bip = coin_convert(user_settings.coin, reward, 'BIP')
    if 0 < reward_bip < 0.05:
        reward_bip = 0.05
        reward = coin_convert('BIP', reward_bip, user_settings.coin)
    return truncate(max(0, reward), 4), details