async def log_tagged_messages(event): hmm = await event.get_chat() from .afk import AFK_ if gvarstatus("GRPLOG") and gvarstatus("GRPLOG") == "false": return if ((no_log_pms_sql.is_approved(hmm.id)) or (not Config.PRIVATE_GROUP_ID) or ("on" in AFK_.USERAFK_ON) or (await event.get_sender() and (await event.get_sender()).bot)): return full = None try: full = await event.client.get_entity(event.message.from_id) except Exception as e: LOGS.info(str(e)) messaget = media_type(event) resalt = f"#TAGS \n<b>Group : </b><code>{hmm.title}</code>" target = await event.client(GetFullUserRequest(event.query.user_id)) him_id = event.query.user_id if full is not None: resalt += ( f"\n<b>From : </b> 👤 [New MSG📨](tg://user?id={him_id})") if messaget is not None: resalt += f"\n<b>Message type : </b><code>{messaget}</code>" else: resalt += f"\n<b>Message : </b>{event.message.message}" resalt += f"\n<b>Message link: </b><a href = 'https://t.me/c/{hmm.id}/{event.message.id}'> link</a>" if not event.is_private: await event.client.send_message( Config.PRIVATE_GROUP_ID, resalt, parse_mode="html", link_preview=False, )
async def monito_p_m_s(event): if not Config.PRIVATE_GROUP_ID: return if gvarstatus("PMLOG") and gvarstatus("PMLOG") == "false": return sender = await event.get_sender() if not sender.bot: chat = await event.get_chat() if not no_log_pms_sql.is_approved(chat.id) and chat.id != 777000: if LOG_CHATS_.RECENT_USER != chat.id: LOG_CHATS_.RECENT_USER = chat.id if LOG_CHATS_.NEWPM: if LOG_CHATS_.COUNT > 1: await LOG_CHATS_.NEWPM.edit( LOG_CHATS_.NEWPM.text.replace( "new message", f"{LOG_CHATS_.COUNT} messages")) else: await LOG_CHATS_.NEWPM.edit( LOG_CHATS_.NEWPM.text.replace( "new message", f"{LOG_CHATS_.COUNT} message")) LOG_CHATS_.COUNT = 0 him_id = event.query.user_id LOG_CHATS_.NEWPM = await event.client.send_message( Config.PRIVATE_GROUP_ID, f"👤 [New Pm](tg://user?id={him_id}) has sent a new message \nId : `{chat.id}`", ) try: if event.message: await event.client.forward_messages( Config.PRIVATE_GROUP_ID, event.message, silent=True) LOG_CHATS_.COUNT += 1 except Exception as e: LOGS.warn(str(e))
async def set_default_city(city): if city.fwd_from: return if not Config.OPEN_WEATHER_MAP_APPID: return await edit_or_reply( city, "`Get an API key from` https://openweathermap.org/ `first.`") if not city.pattern_match.group(1): CITY = gvarstatus("DEFCITY") or "Delhi" else: CITY = city.pattern_match.group(1) timezone_countries = { timezone: country for country, timezones in c_tz.items() for timezone in timezones } if "," in CITY: newcity = CITY.split(",") if len(newcity[1]) == 2: CITY = newcity[0].strip() + "," + newcity[1].strip() else: country = await get_tz((newcity[1].strip()).title()) try: countrycode = timezone_countries[f"{country}"] except KeyError: return await edit_or_reply(city, "`Invalid country.`") CITY = newcity[0].strip() + "," + countrycode.strip() url = f"https://api.openweathermap.org/data/2.5/weather?q={CITY}&appid={Config.OPEN_WEATHER_MAP_APPID}" request = requests.get(url) result = json.loads(request.text) if request.status_code != 200: return await edit_or_reply(city, "`Invalid country.`") addgvar("DEFCITY", CITY) cityname = result["name"] country = result["sys"]["country"] fullc_n = c_n[f"{country}"] await edit_or_reply(city, f"`Set default city as {cityname}, {fullc_n}.`")
async def translateme(trans): if trans.fwd_from: return textx = await trans.get_reply_message() message = trans.pattern_match.group(1) if message: pass elif textx: message = textx.text else: await edit_or_reply( trans, "`Give a text or reply to a message to translate!`") return TRT_LANG = gvarstatus("TRT_LANG") or "en" try: reply_text = await getTranslate(deEmojify(message), dest=TRT_LANG) except ValueError: await edit_delete(trans, "`Invalid destination language.`", time=5) return source_lan = LANGUAGES[f"{reply_text.src.lower()}"] transl_lan = LANGUAGES[f"{reply_text.dest.lower()}"] reply_text = f"**From {source_lan.title()}({reply_text.src.lower()}) to {transl_lan.title()}({reply_text.dest.lower()}) :**\n`{reply_text.text}`" await edit_or_reply(trans, reply_text) if BOTLOG: await trans.client.send_message( BOTLOG_CHATID, f"`Translated some {source_lan.title()} stuff to {transl_lan.title()} just now.`", )
async def _(event): if event.fwd_from: return input_str = event.pattern_match.group(1) if not input_str: input_str = gvarstatus("DEFCITY") or "Delhi" output = requests.get(f"https://wttr.in/{input_str}?mnTC0&lang=en").text await edit_or_reply(event, output, parse_mode=parse_pre)
async def set_grplog(event): if event.fwd_from: return input_str = event.pattern_match.group(1) if input_str == "off": h_type = False elif input_str == "on": h_type = True if gvarstatus("GRPLOG") and gvarstatus("GRPLOG") == "false": GRPLOG = False else: GRPLOG = True if GRPLOG: if h_type: await event.edit("`Group logging is already enabled`") else: addgvar("GRPLOG", h_type) await event.edit("`Group logging is disabled`") else: if h_type: addgvar("GRPLOG", h_type) await event.edit("`Group logging is enabled`") else: await event.edit("`Group logging is already disabled`")
async def _(event): if event.fwd_from: return reply_to_id = await reply_id(event) input_str = event.pattern_match.group(1) if not input_str: input_str = gvarstatus("DEFCITY") or "Delhi" async with aiohttp.ClientSession() as session: sample_url = "https://wttr.in/{}.png" response_api_zero = await session.get(sample_url.format(input_str)) response_api = await response_api_zero.read() with io.BytesIO(response_api) as out_file: await event.reply(f"**City : **`{input_str}`", file=out_file, reply_to=reply_to_id) try: await event.delete() except Exception as e: LOGS.info(str(e))
async def get_weather(weather): if weather.fwd_from: return if not Config.OPEN_WEATHER_MAP_APPID: return await edit_or_reply( weather, "`Get an API key from` https://openweathermap.org/ `first.`") input_str = "".join(weather.text.split(maxsplit=1)[1:]) if not input_str: CITY = gvarstatus("DEFCITY") or "Delhi" else: CITY = input_str timezone_countries = { timezone: country for country, timezones in c_tz.items() for timezone in timezones } if "," in CITY: newcity = CITY.split(",") if len(newcity[1]) == 2: CITY = newcity[0].strip() + "," + newcity[1].strip() else: country = await get_tz((newcity[1].strip()).title()) try: countrycode = timezone_countries[f"{country}"] except KeyError: return await edit_or_reply(weather, "`Invalid country.`") CITY = newcity[0].strip() + "," + countrycode.strip() url = f"https://api.openweathermap.org/data/2.5/weather?q={CITY}&appid={Config.OPEN_WEATHER_MAP_APPID}" async with aiohttp.ClientSession() as _session: async with _session.get(url) as request: requeststatus = request.status requesttext = await request.text() result = json.loads(requesttext) if requeststatus != 200: return await edit_or_reply(weather, "`Invalid country.`") cityname = result["name"] curtemp = result["main"]["temp"] humidity = result["main"]["humidity"] min_temp = result["main"]["temp_min"] max_temp = result["main"]["temp_max"] pressure = result["main"]["pressure"] feel = result["main"]["feels_like"] desc = result["weather"][0] desc = desc["main"] country = result["sys"]["country"] sunrise = result["sys"]["sunrise"] sunset = result["sys"]["sunset"] wind = result["wind"]["speed"] winddir = result["wind"]["deg"] cloud = result["clouds"]["all"] ctimezone = tz(c_tz[country][0]) time = datetime.now(ctimezone).strftime("%A, %I:%M %p") fullc_n = c_n[f"{country}"] # dirs = ["N", "NNE", "NE", "ENE", "E", "ESE", "SE", "SSE", # "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW"] dirs = ["N", "NE", "E", "SE", "S", "SW", "W", "NW"] div = 360 / len(dirs) funmath = int((winddir + (div / 2)) / div) findir = dirs[funmath % len(dirs)] kmph = str(wind * 3.6).split(".") mph = str(wind * 2.237).split(".") def fahrenheit(f): temp = str(((f - 273.15) * 9 / 5 + 32)).split(".") return temp[0] def celsius(c): temp = str((c - 273.15)).split(".") return temp[0] def sun(unix): return datetime.fromtimestamp(unix, tz=ctimezone).strftime("%I:%M %p") await edit_or_reply( weather, f"🌡**Temperature:** `{celsius(curtemp)}°C | {fahrenheit(curtemp)}°F`\n" + f"🥰**Human Feeling** `{celsius(feel)}°C | {fahrenheit(feel)}°F`\n" + f"🥶**Min. Temp.:** `{celsius(min_temp)}°C | {fahrenheit(min_temp)}°F`\n" + f"🥵**Max. Temp.:** `{celsius(max_temp)}°C | {fahrenheit(max_temp)}°F`\n" + f"☁️**Humidity:** `{humidity}%`\n" + f"🧧**Pressure** `{pressure} hPa`\n" + f"🌬**Wind:** `{kmph[0]} kmh | {mph[0]} mph, {findir}`\n" + f"⛈**Cloud:** `{cloud} %`\n" + f"🌄**Sunrise:** `{sun(sunrise)}`\n" + f"🌅**Sunset:** `{sun(sunset)}`\n\n\n" + f"**{desc}**\n" + f"`{cityname}, {fullc_n}`\n" + f"`{time}`\n", )