# * @author Yasir Aris M # * @date 2023-06-21 22:12:27 # * @projectName MissKatyPyro # * Copyright ©YasirPedia All rights reserved import logging from pyrogram import Client, filters from pyrogram.types import Message from misskaty import app from misskaty.helper.http import http from misskaty.core.decorator.ratelimiter import ratelimiter from misskaty.vars import CURRENCY_API __MODULE__ = "Currency" __HELP__ = """ /currency - Send structure message Telegram in JSON using Pyrogram Style. """ LOGGER = logging.getLogger(__name__) @app.on_cmd("currency") @ratelimiter async def currency(_, ctx: Message): if CURRENCY_API is None: return await ctx.reply_msg( "Oops!!get the API from HERE & add it to config vars (CURRENCY_API)", disable_web_page_preview=True, ) if len(ctx.text.split()) != 4: return await ctx.reply_msg( f"Use format /{ctx.command[0]} [amount] [currency_from] [currency_to] to convert currency.", del_in=6, ) amount, currency_from, currency_to = ctx.text.split() if amount.isdigit() or ( amount.replace(".", "", 1).isdigit() and amount.count(".") < 2 ): url = ( f"https://v6.exchangerate-api.com/v6/{CURRENCY_API}/" f"pair/{currency_from}/{currency_to}/{amount}" ) try: res = await http.get(url) data = res.json() try: conversion_rate = data["conversion_rate"] conversion_result = data["conversion_result"] target_code = data["target_code"] base_code = data["base_code"] last_update = data["time_last_update_utc"] except KeyError: return await ctx.reply_msg("Invalid response from api !") await ctx.reply_msg( f"**CURRENCY EXCHANGE RATE RESULT:**\n\n`{format(float(amount), ',')}` **{base_code}** = `{format(float(conversion_result), ',')}` **{target_code}**\nRate Today = `{format(float(conversion_rate), ',')}`\nLast Update: {last_update}" ) except Exception as err: await ctx.reply_msg( f"Failed convert currency, maybe you give wrong currency format or api down.\n\nERROR: {err}" ) else: await ctx.reply_msg( "This seems to be some alien currency, which I can't convert right now.. (⊙_⊙;)" )