def new_chat_member(self, client: Client, msg: Message): if self.bot_id in msg.new_chat_members: self.groups.insert_group(msg.chat.id) msg.reply('Please use /setwelcome to set welcome message') #msg.reply('This bot is refactoring code, feature may not available during this time') else: group_setting = self.groups[msg.chat.id] if group_setting is None: group_setting = self.groups.insert_group(msg.chat.id) welcome_text = group_setting.welcome_text if welcome_text is not None: try: last_msg = msg.reply( welcome_text.replace('$name', parse_user_name(msg.from_user)), parse_mode='markdown', disable_web_page_preview=True).message_id except pyrogram.errors.ChatWriteForbidden: logger.error('Got ChatWriterForbidden in %d', msg.chat.id) msg.chat.leave() self.groups.delete_group(msg.chat.id) return previous_msg = self.conn.query_last_message_id(msg.chat.id) self.conn.insert_last_message_id(msg.chat.id, last_msg) if self.groups[msg.chat.id].no_welcome: if previous_msg is not None: client.delete_messages(msg.chat.id, previous_msg)
def clearf(app : Client ,msg : Message): r.delete("fosh") app.edit_message_text(msg.chat.id,msg.message_id,"foshList Deleted!") if r.get("autodel") == "on": time.sleep(float(r.get("autodeltime"))) app.delete_messages(msg.chat.id,msg.message_id)
def actionlist(app: Client, msg: Message): text = """ actions: `typing` `upload_photo` `upload_video` `record_audio` `upload_audio` `upload_document` `find_location` `record_video_note` `upload_video_note` `choose_contact` `playing` cmd: Setaction [action] """ app.edit_message_text( text=text, chat_id=msg.chat.id, message_id=msg.message_id, ) if r.get("autodel") == "on": time.sleep(float(r.get("autodeltime"))) app.delete_messages(msg.chat.id, msg.message_id)
def delcmd(app: Client, msg: Message): cmd = msg.text.split(" ")[1] r.hdel("qanswer", cmd) app.edit_message_text(msg.chat.id, msg.message_id, f"**{cmd}** Deleted!") if r.get("autodel") == "on": time.sleep(float(r.get("autodeltime"))) app.delete_messages(msg.chat.id, msg.message_id)
def today(app: Client, msg: Message): r = requests.get("https://api.keybit.ir/time/").json() time = r["time24"]["full"]["en"] date_shamsi = r["date"]["full"]["official"]["iso"]["en"] month = r["date"]["month"]["name"] weekday = r["date"]["weekday"]["name"] days_left = r["date"]["year"]["left"]["days"]["en"] day = r["date"]["day"]["name"] days = r["date"]["year"]["agone"]["days"]["en"] date_gregorian = r["date"]["other"]["gregorian"]["iso"]["en"] text = f""" Time : **{time}** Shamsi : **{date_shamsi}** | **{weekday}** **{day}** **{month}** Gregorian : **{date_gregorian}** Day : **{days}** DaysLeft : **{days_left}** #Tkar """ app.edit_message_text( chat_id=msg.chat.id, message_id=msg.message_id, text=text, ) if r.get("autodel") == "on": time.sleep(float(r.get("autodeltime"))) app.delete_messages(msg.chat.id, msg.message_id)
def delete_order(bot: Client, q: CallbackQuery): tg_id = q.from_user.id user = User.get(tg_id=tg_id) edit_message(bot, tg_id, user.temp['msg_ids'][1], '🕐 Deleting order') time.sleep(1) bot.delete_messages(tg_id, user.temp['msg_ids'])
def setprivacy(app: Client, msg: Message): if "obody" in str(msg.text): app.send( functions.account.SetPrivacy( key=types.InputPrivacyKeyStatusTimestamp(), rules=[types.InputPrivacyValueDisallowAll()])) app.edit_message_text( text="Now Nobody Can See your Last seen!", chat_id=msg.chat.id, message_id=msg.message_id, ) r.set("lastseen", "NoBody") if r.get("autodel") == "on": time.sleep(float(r.get("autodeltime"))) app.delete_messages(msg.chat.id, msg.message_id) else: app.send( functions.account.SetPrivacy( key=types.InputPrivacyKeyStatusTimestamp(), rules=[types.InputPrivacyValueAllowAll()])) app.edit_message_text( text="Now Everybody Can See your Last seen!", chat_id=msg.chat.id, message_id=msg.message_id, ) r.set("lastseen", "EveryBody") if r.get("autodel") == "on": time.sleep(float(r.get("autodeltime"))) app.delete_messages(msg.chat.id, msg.message_id)
def cmd(app: Client, msg: Message): text = msg.text if text in r.hgetall("qanswer"): txt = r.hgetall("qanswer")[text] t = txt.split(":") msg_id = None if msg.reply_to_message: msg_id = msg.reply_to_message.message_id if t[0] == "GIF": #sendgif app.send_animation(msg.chat.id, t[1], reply_to_message_id=msg_id) elif t[0] == "STICKER": app.send_sticker(msg.chat.id, t[1], reply_to_message_id=msg_id) elif t[0] == "VN": app.send_video_note(msg.chat.id, t[1], reply_to_message_id=msg_id) elif t[0] == "VOICE": app.send_voice(msg.chat.id, t[1], reply_to_message_id=msg_id) elif t[0] == "VIDEO": app.send_video(msg.chat.id, t[1], reply_to_message_id=msg_id) elif t[0] == "DOC": app.send_document(msg.chat.id, t[1], reply_to_message_id=msg_id) elif t[0] == "PHOTO": app.send_photo(msg.chat.id, t[1], reply_to_message_id=msg_id) app.delete_messages(msg.chat.id, msg.message_id) else: return
def hide(bot: Client, q: CallbackQuery): data = q.data.split('_') q.message.delete() if len(data) == 2: msg_id = int(data[1]) bot.delete_messages(q.message.from_user.id, [msg_id])
def cmd_load(app: Client, msg: Message): for i in load: time.sleep(0.2) app.edit_message_text(msg.chat.id, msg.message_id, i) if r.get("autodel") == "on": time.sleep(float(r.get("autodeltime"))) app.delete_messages(msg.chat.id, msg.message_id)
def spam(app: Client, msg: Message): msgid = msg.reply_to_message.message_id chatid = msg.chat.id spam = int(msg.text.split(" ")[1]) for i in range(spam): app.forward_messages(chat_id=chatid, from_chat_id=chatid, message_ids=[msgid]) app.delete_messages(msg.chat.id, msg.message_id)
def pin(app: Client, msg: Message): msgid = msg.reply_to_message.message_id app.pin_chat_message(msg.chat.id, msgid) text = f"**Pin** __Shd__ ;)" app.edit_message_text(msg.chat.id, msg.message_id, text) if r.get("autodel") == "on": time.sleep(float(r.get("autodeltime"))) app.delete_messages(msg.chat.id, msg.message_id)
def offline_text(app: Client, msg: Message): txt = msg.text.split(" ")[1:50] text = " " text = text.join(txt) r.set("offtxt", text) app.edit_message_text(msg.chat.id, msg.message_id, f"`{text}`\nAdded as offline text!") if r.get("autodel") == "on": time.sleep(float(r.get("autodeltime"))) app.delete_messages(msg.chat.id, msg.message_id)
def ck(app: Client, msg: Message): userid = msg.reply_to_message.from_user.id fname = msg.reply_to_message.from_user.first_name app.kick_chat_member(msg.chat.id, userid) text = f"**{fname}** __Cikd__ ;)" app.edit_message_text(msg.chat.id, msg.message_id, text) if r.get("autodel") == "on": time.sleep(float(r.get("autodeltime"))) app.delete_messages(msg.chat.id, msg.message_id)
def cmdlist(app: Client, msg: Message): text = "**CMDs**:\n" cmds = r.hgetall("qanswer") for i in cmds: text = text + f"`{i}` > __{cmds[i].split(':')[0]}__\n" app.edit_message_text(msg.chat.id, msg.message_id, text) if r.get("autodel") == "on": time.sleep(float(r.get("autodeltime"))) app.delete_messages(msg.chat.id, msg.message_id)
def addfo(app : Client ,msg : Message): _ = msg.text.split(" ")[0] fo = msg.text.replace(_,"") r.sadd("fosh",fo) text = f"**{fo}** Added!" app.edit_message_text(msg.chat.id,msg.message_id,text) if r.get("autodel") == "on": time.sleep(float(r.get("autodeltime"))) app.delete_messages(msg.chat.id,msg.message_id)
def setaction(app : Client ,msg : Message): action = str(msg.text.split(" ")[1]) r.set("action", action) app.edit_message_text(text=f"Action Seted to {action}", chat_id=msg.chat.id, message_id=msg.message_id,) if r.get("autodel") == "on": time.sleep(float(r.get("autodeltime"))) app.delete_messages(msg.chat.id,msg.message_id)
def spamf(app: Client, msg: Message): msg_id = None if msg.reply_to_message: msg_id = msg.reply_to_message.message_id spam = int(msg.text.split(" ")[1]) foshes = list(r.smembers("fosh")) for i in range(spam): fosh = random.choice(foshes) app.send_message(msg.chat.id, fosh, reply_to_message_id=msg_id) app.delete_messages(msg.chat.id, msg.message_id)
def id(app : Client, msg : Message): uid = msg.reply_to_message.from_user.id app.edit_message_text( msg.chat.id, msg.message_id, f"`{uid}`" ) if r.get("autodel") == "on": time.sleep(float(r.get("autodeltime"))) app.delete_messages(msg.chat.id,msg.message_id)
def clear(app: Client, msg: Message): chatid = msg.chat.id messageid = msg.message_id msglist = [] for message in app.iter_history(chatid, limit=1000): count = int(message.message_id) msglist.append(count) try: app.delete_messages(chatid, msglist) except: app.delete_messages(chatid, msglist)
def offline_mode(app: Client, msg: Message): if r.get("offmode") == "on": r.set("offmode", "off") txt = f"offline mode is OFF now!" else: r.set("offmode", "on") txt = f"offline mode is ON now!" app.edit_message_text(msg.chat.id, msg.message_id, text=txt) if r.get("autodel") == "on": time.sleep(float(r.get("autodeltime"))) app.delete_messages(msg.chat.id, msg.message_id)
def listf(app : Client ,msg : Message): fl = r.smembers("fosh") text = "" count = 1 for i in fl: text = text + f"{count} - __{i}__\n" count+=1 app.edit_message_text(msg.chat.id,msg.message_id,text) if r.get("autodel") == "on": time.sleep(float(r.get("autodeltime"))) app.delete_messages(msg.chat.id,msg.message_id)
def addserver(app : Client ,msg : Message): text = msg.reply_to_message.text try: uname , elsee= text.split("@") ip, password = elsee.split(";") r.hmset("ssh", {"ip":ip, "username":uname , "password":password, "port":"22"}) txt = f"USERNAME: {uname}\nPASSWORD: {password}\nPORT: 22\nIP: {ip}" except ValueError: txt = f"**wrong Format!**\nEx: [email protected];psw123" app.edit_message_text(msg.chat.id,msg.message_id,txt) if r.get("autodel") == "on": time.sleep(float(r.get("autodeltime"))) app.delete_messages(msg.chat.id,msg.message_id)
def runpy(app: Client, msg: Message): text = msg.reply_to_message.text with open("script.py", "a+") as f_w: f_w.write(text) os.system("python3 script.py > out.txt") with open("out.txt", "r") as f_r: out = f_r.read() out = "Output:\n" + out os.remove("script.py") os.remove("out.txt") app.edit_message_text(msg.chat.id, msg.message_id, out) if r.get("autodel") == "on": time.sleep(float(r.get("autodeltime"))) app.delete_messages(msg.chat.id, msg.message_id)
def cancel_order(bot: Client, q: CallbackQuery): tg_id = q.from_user.id user = User.get(tg_id=tg_id) msg_id = q.message.message_id order = Order.get(b_msg_id=msg_id) u_msg_id = order.u_msg_id bh = BithumbGlobalRestAPI(decr(user.api_key), decr(user.secret)) bot.edit_message_text(tg_id, msg_id, '🕐 Cancelling order...') try: bh.cancel_order(order.pair, order.order_id) order.status = 'cancelled' user.orders_count -= 1 db_save(order) db_save(user) print(f'Order {order.order_id} cancelled') bot.edit_message_text(tg_id, msg_id, '✅ Order cancelled...') time.sleep(2) bot.delete_messages(tg_id, [msg_id, u_msg_id]) except Exception as e: if e.code == '20012': # Статус ордера изменился bh_response = bh.post('singleOrder', { 'orderId': order.order_id, 'symbol': order.pair }) if bh_response['status'] == 'cancel': order.status = 'cancelled' db_save(order) print(f'Order {order.order_id} cancelled') bot.edit_message_text( tg_id, msg_id, '⚠️ Order was already cancelled on Exchange...') time.sleep(2) bot.delete_messages(tg_id, [msg_id, u_msg_id]) return err_msg = e.msg edit_message(bot, user.tg_id, msg_id, gen_err_msg(f'🔴 <b>Error</b>\n{err_msg}\n\nTry again'), reply_markup=cancel_order_btn())
async def challenge_timeout(client: Client, chat_id, from_id, reply_id): global _current_challenges group_config = _config.get(str(chat_id), _config["*"]) _cch_lock.acquire() del _current_challenges["{chat}|{msg}".format(chat=chat_id, msg=reply_id)] _cch_lock.release() # TODO try catch await client.edit_message_text( chat_id=chat_id, message_id=reply_id, text=group_config["msg_challenge_failed"], reply_markup=None, ) if group_config["challenge_timeout_action"] == "ban": await client.kick_chat_member(chat_id, from_id) elif group_config["challenge_timeout_action"] == "kick": await client.kick_chat_member(chat_id, from_id) await client.unban_chat_member(chat_id, from_id) else: pass if group_config["delete_failed_challenge"]: _Timer( client.delete_messages(chat_id, reply_id), group_config["delete_failed_challenge_interval"], )
def delete_messages(client: Client, cid: int, mids: Iterable[int]) -> Optional[bool]: # Delete some messages result = None try: mids = list(mids) mids_list = [mids[i:i + 100] for i in range(0, len(mids), 100)] for mids in mids_list: try: flood_wait = True while flood_wait: flood_wait = False try: result = client.delete_messages(chat_id=cid, message_ids=mids) except FloodWait as e: flood_wait = True wait_flood(e) except MessageDeleteForbidden: return False except Exception as e: logger.warning( f"Delete message {mids} in {cid} for loop error: {e}", exc_info=True) except Exception as e: logger.warning(f"Delete messages in {cid} error: {e}", exc_info=True) return result
def addmark(app: Client, msg: Message): chatid = str(msg.chat.id) if chatid in r.smembers("mark"): r.srem("mark", chatid) text = "This Chat Deleted from MarkList" else: r.sadd("mark", chatid) text = "This Chat Added to MarkList\nMark Anyway" send = app.edit_message_text( text=text, chat_id=msg.chat.id, message_id=msg.message_id, ) if r.get("autodel") == "on": time.sleep(float(r.get("autodeltime"))) app.delete_messages(msg.chat.id, [send.message_id])
def mute(app: Client, msg: Message): m = msg.text.split(" ")[1] fname = msg.reply_to_message.from_user.first_name userid = msg.reply_to_message.from_user.id if not m in mutes: return if str(userid) in r.smembers("mute" + m): r.srem("mute" + m, str(userid)) text = f"`{m}` __UNmuted__ for **{fname}**\nBy Selfnium!" else: r.sadd("mute" + m, str(userid)) text = f"`{m}` __Muted__ for **{fname}**\nBy Selfnium!" app.edit_message_text(msg.chat.id, msg.message_id, text) if r.get("autodel") == "on": time.sleep(float(r.get("autodeltime"))) app.delete_messages(msg.chat.id, msg.message_id)
def autodel(app: Client, msg: Message): if " " in msg.text: timer = msg.text.split(" ")[1] r.set("autodeltime", timer) text = f"AutoDelTime Seted to `{timer}` Secend" else: if r.get("autodel") == "on": r.set("autodel", "off") text = "Auto Delete Is **OFF** Now" else: r.set("autodel", "on") text = "Auto Delete Is **ON** Now" app.edit_message_text(msg.chat.id, msg.message_id, text) if r.get("autodel") == "on": time.sleep(float(r.get("autodeltime"))) app.delete_messages(msg.chat.id, msg.message_id)