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)
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
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