Spaces:
Runtime error
Runtime error
import datetime | |
import os | |
import requests | |
from pyrogram import Client | |
from pyrogram.types import InputMediaPhoto, Message | |
from Hellbot.functions.templates import github_user_templates | |
from . import Config, HelpMenu, hellbot, on_message | |
async def getpfp(client: Client, message: Message): | |
hell = await hellbot.edit(message, "Processing...") | |
limit = 1 | |
if message.reply_to_message: | |
user = message.reply_to_message.from_user | |
reply_to = message.reply_to_message.id | |
if len(message.command) >= 2: | |
if message.command[1].isdigit(): | |
limit = int(message.command[1]) | |
elif message.command[1] == "all": | |
limit = 0 | |
elif len(message.command) >= 2: | |
try: | |
user = await client.get_users(message.command[1]) | |
reply_to = message.id | |
if len(message.command) > 2: | |
if message.command[2].isdigit(): | |
limit = int(message.command[2]) | |
elif message.command[2] == "all": | |
limit = 0 | |
except Exception as e: | |
return await hellbot.error(hell, f"`{str(e)}`") | |
else: | |
return await hellbot.delete( | |
hell, f"Reply to a message or pass a username/id to get the profile pic." | |
) | |
if not user.photo: | |
return await hellbot.error(hell, f"User {user.mention} has no profile pic.") | |
if limit == 1: | |
async for photo in client.get_chat_photos(user.id, 1): | |
await client.send_photo( | |
message.chat.id, | |
photo.file_id, | |
f"**Profile Pic of User** {user.mention}", | |
reply_to_message_id=reply_to, | |
) | |
else: | |
profile_pics = [] | |
async for photo in client.get_chat_photos(user.id, limit): | |
profile_pics.append(InputMediaPhoto(photo.file_id)) | |
await client.send_media_group( | |
message.chat.id, | |
profile_pics, | |
reply_to_message_id=reply_to, | |
) | |
await hell.delete() | |
async def setpfp(client: Client, message: Message): | |
if not message.reply_to_message: | |
return await hellbot.delete(message, "Reply to a photo to set as profile pic.") | |
hell = await hellbot.edit(message, "Processing...") | |
try: | |
if message.reply_to_message.photo: | |
dwl_path = await message.reply_to_message.download(Config.DWL_DIR) | |
await client.set_profile_photo(photo=dwl_path) | |
elif message.reply_to_message.video: | |
dwl_path = await message.reply_to_message.download(Config.DWL_DIR) | |
await client.set_profile_photo(video=dwl_path) | |
else: | |
return await hellbot.delete( | |
hell, "Reply to a photo or video to set as profile pic." | |
) | |
except Exception as e: | |
return await hellbot.error(hell, f"`{str(e)}`") | |
await hellbot.delete(hell, "Profile pic updated successfully.") | |
await hellbot.check_and_log( | |
"setpfp", | |
f"**User:** {message.from_user.mention} (`{message.from_user.id}`)", | |
dwl_path, | |
) | |
os.remove(dwl_path) | |
async def setbio(client: Client, message: Message): | |
bio = await hellbot.input(message) | |
hell = await hellbot.edit(message, "Processing...") | |
try: | |
await client.update_profile(bio=bio) | |
except Exception as e: | |
return await hellbot.error(hell, f"`{str(e)}`") | |
await hellbot.delete(hell, "Bio updated successfully.") | |
await hellbot.check_and_log( | |
"setbio", | |
f"**User:** {message.from_user.mention} (`{message.from_user.id}`)\n\n**Bio:** `{bio}`", | |
) | |
async def setname(client: Client, message: Message): | |
if len(message.command) < 2: | |
return await hellbot.delete(message, "Pass a name to set.") | |
name = await hellbot.input(message) | |
hell = await hellbot.edit(message, "Processing...") | |
try: | |
await client.update_profile(first_name=name) | |
except Exception as e: | |
return await hellbot.error(hell, f"`{str(e)}`") | |
await hellbot.delete(hell, "Name updated successfully.") | |
await hellbot.check_and_log( | |
"setname", | |
f"**User:** {message.from_user.mention} (`{message.from_user.id}`)\n\n**Name:** `{name}`", | |
) | |
async def setusername(client: Client, message: Message): | |
username = message.command[1] if len(message.command) > 1 else None | |
hell = await hellbot.edit(message, "Processing...") | |
try: | |
await client.set_username(username) | |
except Exception as e: | |
return await hellbot.error(hell, f"`{str(e)}`") | |
await hellbot.delete(hell, "Username updated successfully.") | |
await hellbot.check_and_log( | |
"setusername", | |
f"**User:** {message.from_user.mention} (`{message.from_user.id}`)\n\n**Username:** `{username}`", | |
) | |
async def delpfp(client: Client, message: Message): | |
limit = ( | |
1 | |
if len(message.command) < 2 | |
else int(message.command[1]) | |
if message.command[1].isdigit() | |
else 1 | |
) | |
hell = await hellbot.edit(message, "Processing...") | |
profile_pics = [] | |
async for photo in client.get_chat_photos(client.me.id, limit): | |
profile_pics.append(photo.file_id) | |
if not profile_pics: | |
return await hellbot.error(hell, "No profile pics found.") | |
await client.delete_profile_photos(profile_pics) | |
async def gituser(_, message: Message): | |
if len(message.command) < 2: | |
return await hellbot.delete(message, "Pass a github username to search.") | |
hell = await hellbot.edit(message, "Processing...") | |
username = message.command[1] | |
try: | |
response = requests.get(f"https://api.github.com/users/{username}").json() | |
avatar_url = response["avatar_url"] | |
bio = response["bio"] | |
blog = response["blog"] | |
company = response["company"] | |
created_at = datetime.datetime.strptime( | |
response["created_at"], "%Y-%m-%dT%H:%M:%SZ" | |
) | |
email = response["email"] | |
followers = response["followers"] | |
following = response["following"] | |
git_id = response["id"] | |
id_type = response["type"] | |
location = response["location"] | |
name = response["name"] | |
profile_url = response["html_url"] | |
public_gists = response["public_gists"] | |
public_repos = response["public_repos"] | |
username = response["login"] | |
if not bio: | |
bio = "No bio found." | |
file = f"{Config.TEMP_DIR}{username}.jpg" | |
resp = requests.get(avatar_url) | |
with open(file, "wb") as f: | |
f.write(resp.content) | |
await message.reply_photo( | |
file, | |
caption=await github_user_templates( | |
username=username, | |
git_id=git_id, | |
id_type=id_type, | |
name=name, | |
profile_url=profile_url, | |
blog=blog, | |
company=company, | |
email=email, | |
location=location, | |
public_repos=public_repos, | |
public_gists=public_gists, | |
followers=followers, | |
following=following, | |
created_at=created_at.strftime("%d %B %Y"), | |
bio=bio, | |
), | |
) | |
await hell.delete() | |
os.remove(file) | |
except Exception as e: | |
return await hellbot.error(hell, f"`{str(e)}`") | |
HelpMenu("profile").add( | |
"getpfp", | |
"<reply/username/id> <limit>", | |
"Get number of profile pic of a user.", | |
"getpfp @ForGo10God 5", | |
).add( | |
"setpfp", | |
"<reply to photo>", | |
"Set the profile picture of your telegram account.", | |
"setpfp", | |
).add( | |
"setbio", | |
"<new bio>", | |
"Set the bio of the bot.", | |
"setbio Embracing the Hellbot.", | |
"To remove the bio dont pass any argument.", | |
).add( | |
"setname", "<new name>", "Set the name of the bot.", "setname HellBot" | |
).add( | |
"setusername", | |
"<new username>", | |
"Set the username of the bot.", | |
"setusername HellBot", | |
"To remove the username dont pass any argument.", | |
).add( | |
"delpfp", | |
"<limit>", | |
"Delete the profile pics of the bot.", | |
"delpfp 5", | |
"To delete all profile pics pass 0 as limit.", | |
).add( | |
"github", | |
"<username>", | |
"Get the github profile of a user.", | |
"github hellboy-op", | |
).info( | |
"Profile Module" | |
).done() | |