from pyrogram import filters, Client from pyrogram.types import Message from misskaty import app import logging from misskaty.helper.http import http from misskaty.core.message_utils import kirimPesan from misskaty.vars import COMMAND_HANDLER, CURRENCY_API __MODULE__ = "Currency" __HELP__ = """ /currency - Send structure message Telegram in JSON using Pyrogram Style. """ LOGGER = logging.getLogger(__name__) @app.on_message(filters.command(["currency"], COMMAND_HANDLER)) async def currency(c: Client, m: Message): if CURRENCY_API is None: return await kirimPesan(m, f"Oops!!get the API from " "HERE " "& add it to config vars (CURRENCY_API)", disable_web_page_preview=True) if len(m.text.split()) == 4: teks = m.text.split() amount = teks[1] currency_from = teks[2] currency_to = teks[3] else: return await kirimPesan(m, f"Use format /{m.command[0]} [amount] [currency_from] [currency_to] to convert currency.") if amount.isdigit(): 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 kirimPesan(m, "Invalid response from api !") await kirimPesan(m, "**CURRENCY EXCHANGE RATE RESULT:**\n\n" f"`{amount}` **{target_code}** = `{round(conversion_result)}` **{base_code}**\n" f"Rate Today = `{round(conversion_rate)}`\n" f"Last Update: {last_update}") except: await kirimPesan(m, "Failed convert currency, maybe you give wrong currency format or api down.") else: await kirimPesan(m, r"This seems to be some alien currency, which I can't convert right now.. (⊙_⊙;)")