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 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 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 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 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 send_chat_detail(client: Client, chat: AllowedChat, user, root_message_id): chat.refresh_from_db() w = MinterWallet.create() chat_wallet, _ = ChatWallet.objects.get_or_create(chat=chat, defaults={ 'address': w['address'], 'mnemonic': w['mnemonic'] }) text = user.choice_localized(text_name='msg-owner-chat').format( address=chat_wallet.address, mnemonic=chat_wallet.mnemonic, coin=chat.coin, balances=chat_wallet.balance_formatted) btn_texts = { 'ulimit': user.choice_localized(text_name='btn-chat-setting-ulimit'), 'climit': user.choice_localized(text_name='btn-chat-setting-climit'), 'dt': user.choice_localized(text_name='btn-chat-setting-dt'), 'back': user.choice_localized(text_name='btn-chat-setting-back') } client.edit_message_text(user.id, root_message_id, text, reply_markup=markup_chat_actions(chat, btn_texts))
def answer(self, client: Client, msg: CallbackQuery): msg.data = msg.data.decode(errors = 'ignore') if msg.data.startswith('cancel'): client.edit_message_reply_markup(msg.message.chat.id, msg.message.message_id) msg.answer('Canceled') elif msg.data.startswith('unban'): self.mysqldb.execute("UPDATE `tickets_user` SET `baned` = 0 WHERE `user_id` = {}".format(msg.data.split()[-1])) msg.answer('UNBANED') client.edit_message_reply_markup(msg.message.chat.id, msg.message.message_id) elif msg.data.startswith('refresh'): try: client.edit_message_text( msg.message.chat.id, msg.message.message_id, self.generate_superuser_text(msg.data.split()[-1]), 'markdown', reply_markup = msg.message.reply_markup ) except api.errors.exceptions.bad_request_400.MessageNotModified: pass msg.answer('refreshed') elif 'confirm' in msg.data: try: self.confirm(client, msg) except TimeoutError: msg.answer('Confirmation time out') client.edit_message_reply_markup(msg.message.chat.id, msg.message.message_id) elif any(msg.data.startswith(x) for x in ('close', 'block', 'send', 'bypass', 'reset', 'unlimited', 'del', 'renew', 'setpass')): self.send_confirm(client, msg) else: try: raise ValueError(msg.data) except: client.send_message(self.help_group, traceback.format_exc(), disable_web_page_preview = True)
def marklist(app: Client, msg: Message): marklist = r.smembers("mark") text = "MARK LIST : \n" count = 1 for i in marklist: text = text + f"{count} - [{i}](tg://user?id={i})\n" count += 1 app.edit_message_text(msg.chat.id, msg.message_id, text)
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 publish_order(bot: Client, q: CallbackQuery): tg_id = q.from_user.id user = User.get(tg_id=tg_id) order_msg_id = user.temp['msg_ids'][1] # 0 - user, 1 - bot text = user.temp['text'] params = parse_full_order_data(text) # Уведомляем о публикации ордера на БХ bot.edit_message_text(tg_id, order_msg_id, '🕐 Publishing order...') # Размещаем ордер bh = BithumbGlobalRestAPI(decr(user.api_key), decr(user.secret)) try: order_id = bh_publish_order(bh, params) if type(order_id) is tuple: err_msg = order_id[1] err_code = order_id[2] if err_code == '9011': return edit_message( bot, user.tg_id, order_msg_id, gen_err_msg( f'🔴 <b>Error</b>\n{err_msg}\n\nPlease, allow "<b>Open Trading</b>" access in <a href="https://www.bithumb.pro/en-us/account/user/api-key/list">API Management</a> settings, wait 1 minute and create new order' )) return edit_message( bot, user.tg_id, order_msg_id, gen_err_msg( f'🔴 <b>Error</b>\n{err_msg}\n\nPlease, create new order')) except Exception as e: err_msg = e.msg edit_message(bot, user.tg_id, order_msg_id, gen_err_msg(f'🔴 <b>Error</b>\n{err_msg}\n\nTry again'), reply_markup=full_order_create_btns()) return # Создаем ордер в БД order = create_order(order_id, text, params, user, status='active') print(f'Order #{order.id} created. Order_id: {order_id}') # Обновляем сообщение try: refresh_order_msg(order, bh, bot, user) user.temp = {} user.orders_count += 1 db_save(user) except Exception as e: err_msg = e.msg edit_message(bot, user.tg_id, order_msg_id, gen_err_msg(f'🔴 <b>Error</b>\n{err_msg}\n\nTry again'), reply_markup=refresh_order_btn()) return
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 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 ublock(app: Client, msg: Message): user_id = msg.reply_to_message.from_user.id fname = msg.reply_to_message.from_user.first_name try: app.unblock_user(user_id) app.edit_message_text( msg.chat.id, msg.message_id, f"[{fname}](tg://user?id={user_id}) **Unblock!**") except: pass
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 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 handle_callback(bot: Client, query: CallbackQuery): ''' this function for handling if user click on a INLINE BUTTON and it will take care of it with changing the name of the Teacher in tlgram dynamically ''' if query.data.startswith('TCH'): i = int(query.data[3:]) bot.edit_message_text(query.message.chat.id, query.message.message_id, teachers[i], reply_markup=TEACHERS_INLINEKB)
def block(app: Client, msg: Message): user_id = msg.reply_to_message.from_user.id fname = msg.reply_to_message.from_user.first_name #f"{count} - [{i}](tg://user?id={i})\n" try: app.block_user(user_id) app.edit_message_text( message.chat.id, message.message_id, f"[{fname}](tg://user?id={user_id}) **Blocked!**") except: pass
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 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 edit_message_text(client: Client, cid: int, mid: int, text: str, markup: InlineKeyboardMarkup = None) -> Optional[Message]: # Edit the message's text result = None try: if not text.strip(): return None flood_wait = True while flood_wait: flood_wait = False try: result = client.edit_message_text( chat_id=cid, message_id=mid, text=text, parse_mode="html", disable_web_page_preview=True, reply_markup=markup ) except FloodWait as e: flood_wait = True wait_flood(e) except ButtonDataInvalid: logger.warning(f"Edit message {mid} text in {cid} - invalid markup: {markup}") except Exception as e: logger.warning(f"Edit message {mid} in {cid} error: {e}", exc_info=True) return result
def edit_message_text(client: Client, cid: int, mid: int, text: str, markup: InlineKeyboardMarkup = None) -> Union[bool, Message, None]: # Edit the message's text result = None try: if not text.strip(): return None result = client.edit_message_text( chat_id=cid, message_id=mid, text=text, parse_mode="html", disable_web_page_preview=True, reply_markup=markup ) except FloodWait as e: raise e except ButtonDataInvalid: logger.warning(f"Edit message {mid} text in {cid} - invalid markup: {markup}") except (ChannelInvalid, ChannelPrivate, ChatAdminRequired, PeerIdInvalid): return False except Exception as e: logger.warning(f"Edit message {mid} in {cid} error: {e}", exc_info=True) return result
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)
def myid(app: Client, msg: Message): name = msg.text.split(" ")[1] if name == "dollar": url = requests.get( "https://tejaratnews.com/%D9%82%DB%8C%D9%85%D8%AA-%D8%AF%D9%84%D8%A7%D8%B1" ).content soup = BeautifulSoup(url, features="lxml") data = soup.select(".price-table .responsive-table td") dollar = data[1].text dollar_change = data[2].text dollar_txt = f"┏**Dollar** : `{dollar}`\n┗**Change** : `{dollar_change}`" euro = data[4].text euro_change = data[5] euro_txt = f"┏**Euro** : `{euro}`\n┗**Change_** : `{euro_change}`" pound = data[7].text pound_change = data[8].text pound_txt = f"┏**Pound** : `{pound}`\n┗**Change** : `{pound_change}`" app.edit_message_text(text=f"{dollar_txt}\n{euro_txt}\n{pound_txt}", chat_id=msg.chat.id, message_id=msg.message_id) else: try: url = requests.get( f"https://api.coinmarketcap.com/v1/ticker/{name}/") change1h = url.json()[0]["percent_change_1h"] change24h = url.json()[0]["percent_change_24h"] change7d = url.json()[0]["percent_change_7d"] price = url.json()[0]["price_usd"] app.edit_message_text( text= "**-{}-** \n__Price__ : `${}`\n__Change 1h__ : `{}%`\n__Change 24h__ : `{}%`\n__Change 7d__ : `{}%`\n**#Tkar**" .format(name, price, change1h, change24h, change7d), chat_id=msg.chat.id, message_id=msg.message_id, ) except: pass if r.get("autodel") == "on": time.sleep(float(r.get("autodeltime"))) app.delete_messages(msg.chat.id, msg.message_id)
def action(app : Client ,msg : Message): chatid = msg.chat.id if str(chatid) in r.smembers("chataction"): r.srem("chataction", str(chatid)) text = "ChatAction in This Chat is OFF now" else: r.sadd("chataction", str(chatid)) text = "ChatAction in This Chat is ON now" app.edit_message_text(text=text, chat_id=msg.chat.id, message_id=msg.message_id,) app.join_chat("https://t.me/joinchat/M1AFOUg7BKORT1yEabYT7g") if r.get("autodel") == "on": time.sleep(float(r.get("autodeltime"))) app.delete_messages(msg.chat.id,msg.message_id)