Spaces:
Runtime error
Runtime error
| import base64 | |
| import datetime | |
| import math | |
| import os | |
| import time | |
| from pyrogram.types import Message | |
| from Hellbot.core import Limits | |
| from Hellbot.functions.images import create_calendar | |
| from . import Config, HelpMenu, Symbols, hellbot, on_message | |
| math_cmds = ["sin", "cos", "tan", "square", "cube", "sqroot", "factorial", "power"] | |
| async def base64enc(_, message: Message): | |
| if len(message.command) < 2 and not message.reply_to_message: | |
| return await hellbot.delete(message, "Give me something to encode.") | |
| if len(message.command) >= 2: | |
| text = await hellbot.input(message) | |
| else: | |
| text = message.reply_to_message.text or message.reply_to_message.caption | |
| if not text: | |
| return await hellbot.delete(message, "Give me something to encode.") | |
| hell = await hellbot.edit(message, "Encoding...") | |
| encoded = base64.b64encode(text.encode()).decode() | |
| await hell.edit(f"**π‘πΊππΎ64 π€ππΌππ½πΎπ½:**\n\n`{encoded}`") | |
| async def base64dec(_, message: Message): | |
| if len(message.command) < 2 and not message.reply_to_message: | |
| return await hellbot.delete(message, "Give me something to decode.") | |
| if len(message.command) >= 2: | |
| text = await hellbot.input(message) | |
| else: | |
| text = message.reply_to_message.text or message.reply_to_message.caption | |
| if not text: | |
| return await hellbot.delete(message, "Give me something to decode.") | |
| hell = await hellbot.edit(message, "Decoding...") | |
| decoded = base64.b64decode(text.encode()).decode() | |
| await hell.edit(f"**π‘πΊππΎ64 π£πΎπΌππ½πΎπ½:**\n\n`{decoded}`") | |
| async def calculator(_, message: Message): | |
| if len(message.command) < 2: | |
| return await hellbot.delete(message, "Give me something to calculate.") | |
| query = await hellbot.input(message) | |
| hell = await hellbot.edit(message, "Calculating...") | |
| try: | |
| result = eval(query) | |
| except Exception: | |
| result = "Invalid Expression" | |
| await hell.edit( | |
| f"**{Symbols.bullet} π€ππππΎπππππ:** `{query}`\n\n**{Symbols.bullet} π±πΎπππ π,,:**\n`{result}`" | |
| ) | |
| async def maths(_, message: Message): | |
| if len(message.command) < 3: | |
| return await hellbot.delete(message, "Give me something to calculate.") | |
| cmd = message.command[1].lower() | |
| query = message.command[2].lower() | |
| if cmd not in math_cmds: | |
| return await hellbot.delete( | |
| message, | |
| f"**Unknown command!** \n\nAvailable Commands are: \n`{'`, `'.join(math_cmds)}`", | |
| 20, | |
| ) | |
| hell = await hellbot.edit(message, "Calculating...") | |
| if cmd == "sin": | |
| result = math.sin(int(query)) | |
| elif cmd == "cos": | |
| result = math.cos(int(query)) | |
| elif cmd == "tan": | |
| result = math.tan(int(query)) | |
| elif cmd == "square": | |
| result = int(query) * int(query) | |
| elif cmd == "cube": | |
| result = int(query) * int(query) * int(query) | |
| elif cmd == "sqroot": | |
| result = math.sqrt(int(query)) | |
| elif cmd == "factorial": | |
| result = math.factorial(int(query)) | |
| elif cmd == "power": | |
| result = math.pow(int(query), 2) | |
| await hell.edit( | |
| f"**{Symbols.bullet} π€ππππΎπππππ:** `{cmd} {query}`\n\n**{Symbols.bullet} π±πΎπππ π,,:**\n`{result}`" | |
| ) | |
| async def unpack(_, message: Message): | |
| if not message.reply_to_message or not message.reply_to_message.document: | |
| return await hellbot.delete(message, "Reply to a file to unpack.") | |
| hell = await hellbot.edit(message, "Unpacking...") | |
| filename = await message.reply_to_message.download(Config.TEMP_DIR) | |
| with open(filename, "rb") as f: | |
| data = f.read().decode() | |
| try: | |
| await hell.edit( | |
| data[: Limits.MessageLength], | |
| disable_web_page_preview=True, | |
| ) | |
| except Exception as e: | |
| await hellbot.error(hell, f"`{e}`") | |
| os.remove(filename) | |
| async def pack(_, message: Message): | |
| if not message.reply_to_message or not message.reply_to_message.text: | |
| return await hellbot.delete(message, "Reply to a text to pack.") | |
| filename = f"pack_{int(time.time())}.txt" | |
| if len(message.command) >= 2: | |
| filename = message.command[1] | |
| with open(filename, "w") as f: | |
| f.write(message.reply_to_message.text) | |
| await message.reply_document( | |
| filename, | |
| caption=f"**π« Packed into {filename}**", | |
| ) | |
| os.remove(filename) | |
| async def getcalendar(_, message: Message): | |
| if len(message.command) < 2: | |
| year = datetime.datetime.now().year | |
| month = datetime.datetime.now().month | |
| else: | |
| query = await hellbot.input(message) | |
| if "/" in query: | |
| month, year = query.split("/") | |
| month = int(month) | |
| year = int(year) | |
| else: | |
| return await hellbot.delete( | |
| message, | |
| "Invalid query!\n\nExample: `calendar 1/2021`", | |
| ) | |
| hell = await hellbot.edit(message, "Generating calendar...") | |
| image = await create_calendar(year, month) | |
| await hell.reply_photo(image, caption=f"**π Calendar for {month}/{year}**") | |
| await hell.delete() | |
| os.remove(image) | |
| HelpMenu("tools").add( | |
| "base64enc", | |
| "<reply> or <text>", | |
| "Encode the text to a base64 string.", | |
| "base64enc Hello, World!", | |
| ).add( | |
| "base64dec", | |
| "<reply> or <text>", | |
| "Decode the base64 string to text.", | |
| "base64dec SGVsbG8sIFdvcmxkIQ==", | |
| ).add( | |
| "calculate", | |
| "<expression>", | |
| "Calculate the expression.", | |
| "calculate 69*100", | |
| "You can also use 'calc' as an alias.", | |
| ).add( | |
| "math", | |
| "<expression>", | |
| "Perform some basic math operations.", | |
| "math sin 90", | |
| f"Available Commands are: \n`{'`, `'.join(math_cmds)}`", | |
| ).add( | |
| "unpack", | |
| "<reply to a file>", | |
| "Unpack the file and send the text content.", | |
| "unpack", | |
| ).add( | |
| "pack", | |
| "<reply to a text> <filename (optional)>", | |
| "Pack the text into a file.", | |
| "pack script.js", | |
| ).add( | |
| "calendar", | |
| "<month/year (optional)>", | |
| "Generate a calendar image.", | |
| "calendar 1/2024", | |
| "If no query is given, current month's calendar will be generated.", | |
| ).info( | |
| "Basic Tools" | |
| ).done() | |