| |
| |
| |
| |
| |
| |
|
|
|
|
| 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) |
|
|