Date: 30-8-2022 Co-Authored-By: Aditya <me@xditya.me> Co-Authored-By: Amit Sharma <48654350+buddhhu@users.noreply.github.com> Co-Authored-By: CyrusXD <79554993+Ashutosh1478@users.noreply.github.com> Co-Authored-By: Danish <danish@ultroid.tech> Co-Authored-By: TechiError <error@notavailable.live> Co-Authored-By: Arnab Paryali <arnabxd@pm.me>
154 lines
3.7 KiB
Python
154 lines
3.7 KiB
Python
# Ultroid - UserBot
|
|
# Copyright (C) 2021-2022 TeamUltroid
|
|
#
|
|
# This file is a part of < https://github.com/TeamUltroid/Ultroid/ >
|
|
# PLease read the GNU Affero General Public License in
|
|
# <https://www.github.com/TeamUltroid/Ultroid/blob/main/LICENSE/>.
|
|
|
|
|
|
from . import get_help
|
|
|
|
__doc__ = get_help("help_calculator")
|
|
|
|
import re
|
|
|
|
from . import Button, asst, callback, get_string, in_pattern, udB, ultroid_cmd
|
|
|
|
CALC = {}
|
|
|
|
m = [
|
|
"AC",
|
|
"C",
|
|
"⌫",
|
|
"%",
|
|
"7",
|
|
"8",
|
|
"9",
|
|
"+",
|
|
"4",
|
|
"5",
|
|
"6",
|
|
"-",
|
|
"1",
|
|
"2",
|
|
"3",
|
|
"x",
|
|
"00",
|
|
"0",
|
|
".",
|
|
"÷",
|
|
]
|
|
tultd = [Button.inline(f"{x}", data=f"calc{x}") for x in m]
|
|
lst = list(zip(tultd[::4], tultd[1::4], tultd[2::4], tultd[3::4]))
|
|
lst.append([Button.inline("=", data="calc=")])
|
|
|
|
|
|
@ultroid_cmd(pattern="calc")
|
|
async def icalc(e):
|
|
udB.del_key("calc")
|
|
if e.client._bot:
|
|
return await e.reply(get_string("calc_1"), buttons=lst)
|
|
results = await e.client.inline_query(asst.me.username, "calc")
|
|
await results[0].click(e.chat_id, silent=True, hide_via=True)
|
|
await e.delete()
|
|
|
|
|
|
@in_pattern("calc", owner=True)
|
|
async def _(e):
|
|
calc = e.builder.article("Calc", text=get_string("calc_1"), buttons=lst)
|
|
await e.answer([calc])
|
|
|
|
|
|
@callback(re.compile("calc(.*)"), owner=True)
|
|
async def _(e):
|
|
x = (e.data_match.group(1)).decode()
|
|
user = e.query.user_id
|
|
get = None
|
|
if x == "AC":
|
|
if CALC.get(user):
|
|
CALC.pop(user)
|
|
await e.edit(
|
|
get_string("calc_1"),
|
|
buttons=[Button.inline(get_string("calc_2"), data="recalc")],
|
|
)
|
|
elif x == "C":
|
|
if CALC.get(user):
|
|
CALC.pop(user)
|
|
await e.answer("cleared")
|
|
elif x == "⌫":
|
|
if CALC.get(user):
|
|
get = CALC[user]
|
|
if get:
|
|
CALC.update({user: get[:-1]})
|
|
await e.answer(str(get[:-1]))
|
|
elif x == "%":
|
|
if CALC.get(user):
|
|
get = CALC[user]
|
|
if get:
|
|
CALC.update({user: f"{get}/100"})
|
|
await e.answer(str(f"{get}/100"))
|
|
elif x == "÷":
|
|
if CALC.get(user):
|
|
get = CALC[user]
|
|
if get:
|
|
CALC.update({user: f"{get}/"})
|
|
await e.answer(str(f"{get}/"))
|
|
elif x == "x":
|
|
if CALC.get(user):
|
|
get = CALC[user]
|
|
if get:
|
|
CALC.update({user: f"{get}*"})
|
|
await e.answer(str(f"{get}*"))
|
|
elif x == "=":
|
|
if CALC.get(user):
|
|
get = CALC[user]
|
|
if get:
|
|
if get.endswith(("*", ".", "/", "-", "+")):
|
|
get = get[:-1]
|
|
out = eval(get)
|
|
try:
|
|
num = float(out)
|
|
await e.answer(f"Answer : {num}", cache_time=0, alert=True)
|
|
except BaseException:
|
|
CALC.pop(user)
|
|
await e.answer(get_string("sf_8"), cache_time=0, alert=True)
|
|
await e.answer("None")
|
|
else:
|
|
if CALC.get(user):
|
|
get = CALC[user]
|
|
if get:
|
|
CALC.update({user: get + x})
|
|
return await e.answer(str(get + x))
|
|
CALC.update({user: x})
|
|
await e.answer(str(x))
|
|
|
|
|
|
@callback("recalc", owner=True)
|
|
async def _(e):
|
|
m = [
|
|
"AC",
|
|
"C",
|
|
"⌫",
|
|
"%",
|
|
"7",
|
|
"8",
|
|
"9",
|
|
"+",
|
|
"4",
|
|
"5",
|
|
"6",
|
|
"-",
|
|
"1",
|
|
"2",
|
|
"3",
|
|
"x",
|
|
"00",
|
|
"0",
|
|
".",
|
|
"÷",
|
|
]
|
|
tultd = [Button.inline(f"{x}", data=f"calc{x}") for x in m]
|
|
lst = list(zip(tultd[::4], tultd[1::4], tultd[2::4], tultd[3::4]))
|
|
lst.append([Button.inline("=", data="calc=")])
|
|
await e.edit(get_string("calc_1"), buttons=lst)
|