Spaces:
Paused
Paused
Enable help buttons to work without assistant bot - Make help menu dynamic and register callbacks on userbot for full button functionality without bot
Browse files- plugins/_help.py +40 -24
- plugins/_inline.py +8 -4
- pyUltroid/_misc/_assistant.py +10 -1
plugins/_help.py
CHANGED
|
@@ -18,23 +18,39 @@ from pyUltroid.fns.tools import cmd_regex_replace
|
|
| 18 |
|
| 19 |
from . import HNDLR, LOGS, OWNER_NAME, asst, get_string, inline_pic, udB, ultroid_cmd
|
| 20 |
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 27 |
Button.inline(get_string("help_6"), data="uh_VCBot_"),
|
| 28 |
Button.inline(get_string("help_7"), data="inlone"),
|
| 29 |
-
]
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 38 |
|
| 39 |
|
| 40 |
@ultroid_cmd(pattern="help( (.*)|$)")
|
|
@@ -122,8 +138,8 @@ async def _help(ult):
|
|
| 122 |
for x in LIST.values():
|
| 123 |
z.extend(x)
|
| 124 |
cmd = len(z) + 10
|
| 125 |
-
|
| 126 |
-
|
| 127 |
return await ult.reply(
|
| 128 |
get_string("inline_4").format(
|
| 129 |
OWNER_NAME,
|
|
@@ -132,7 +148,7 @@ async def _help(ult):
|
|
| 132 |
cmd,
|
| 133 |
),
|
| 134 |
file=inline_pic(),
|
| 135 |
-
buttons=
|
| 136 |
)
|
| 137 |
try:
|
| 138 |
results = await ult.client.inline_query(asst.me.username, "ultd")
|
|
@@ -142,8 +158,8 @@ async def _help(ult):
|
|
| 142 |
for x in LIST.values():
|
| 143 |
z.extend(x)
|
| 144 |
cmd = len(z) + 10
|
| 145 |
-
|
| 146 |
-
|
| 147 |
return await ult.reply(
|
| 148 |
get_string("inline_4").format(
|
| 149 |
OWNER_NAME,
|
|
@@ -152,15 +168,15 @@ async def _help(ult):
|
|
| 152 |
cmd,
|
| 153 |
),
|
| 154 |
file=inline_pic(),
|
| 155 |
-
buttons=
|
| 156 |
)
|
| 157 |
except BotMethodInvalidError:
|
| 158 |
z = []
|
| 159 |
for x in LIST.values():
|
| 160 |
z.extend(x)
|
| 161 |
cmd = len(z) + 10
|
| 162 |
-
|
| 163 |
-
|
| 164 |
return await ult.reply(
|
| 165 |
get_string("inline_4").format(
|
| 166 |
OWNER_NAME,
|
|
@@ -169,7 +185,7 @@ async def _help(ult):
|
|
| 169 |
cmd,
|
| 170 |
),
|
| 171 |
file=inline_pic(),
|
| 172 |
-
buttons=
|
| 173 |
)
|
| 174 |
except BotResponseTimeoutError:
|
| 175 |
return await ult.eor(
|
|
|
|
| 18 |
|
| 19 |
from . import HNDLR, LOGS, OWNER_NAME, asst, get_string, inline_pic, udB, ultroid_cmd
|
| 20 |
|
| 21 |
+
def _build_help_menu(include_settings=True, include_manager=False):
|
| 22 |
+
"""Build the help menu dynamically, optionally including settings button and manager help"""
|
| 23 |
+
menu = [
|
| 24 |
+
[
|
| 25 |
+
Button.inline(get_string("help_4"), data="uh_Official_"),
|
| 26 |
+
Button.inline(get_string("help_5"), data="uh_Addons_"),
|
| 27 |
+
],
|
| 28 |
+
]
|
| 29 |
+
|
| 30 |
+
# Manager Help button
|
| 31 |
+
if include_manager:
|
| 32 |
+
menu.append([Button.inline("• Manager Help •", "mngbtn")])
|
| 33 |
+
|
| 34 |
+
menu.append([
|
| 35 |
Button.inline(get_string("help_6"), data="uh_VCBot_"),
|
| 36 |
Button.inline(get_string("help_7"), data="inlone"),
|
| 37 |
+
])
|
| 38 |
+
|
| 39 |
+
# Settings button only if bot is available
|
| 40 |
+
settings_row = [Button.inline(get_string("help_8"), data="ownr")]
|
| 41 |
+
if include_settings:
|
| 42 |
+
try:
|
| 43 |
+
if hasattr(asst, "me") and hasattr(asst.me, "username") and asst.me.username:
|
| 44 |
+
settings_row.append(
|
| 45 |
+
Button.url(
|
| 46 |
+
get_string("help_9"), url=f"https://t.me/{asst.me.username}?start=set"
|
| 47 |
+
)
|
| 48 |
+
)
|
| 49 |
+
except Exception:
|
| 50 |
+
pass
|
| 51 |
+
menu.append(settings_row)
|
| 52 |
+
menu.append([Button.inline(get_string("help_10"), data="close")])
|
| 53 |
+
return menu
|
| 54 |
|
| 55 |
|
| 56 |
@ultroid_cmd(pattern="help( (.*)|$)")
|
|
|
|
| 138 |
for x in LIST.values():
|
| 139 |
z.extend(x)
|
| 140 |
cmd = len(z) + 10
|
| 141 |
+
include_manager = bool(udB.get_key("MANAGER") and udB.get_key("DUAL_HNDLR") == "/")
|
| 142 |
+
help_menu = _build_help_menu(include_settings=False, include_manager=include_manager)
|
| 143 |
return await ult.reply(
|
| 144 |
get_string("inline_4").format(
|
| 145 |
OWNER_NAME,
|
|
|
|
| 148 |
cmd,
|
| 149 |
),
|
| 150 |
file=inline_pic(),
|
| 151 |
+
buttons=help_menu,
|
| 152 |
)
|
| 153 |
try:
|
| 154 |
results = await ult.client.inline_query(asst.me.username, "ultd")
|
|
|
|
| 158 |
for x in LIST.values():
|
| 159 |
z.extend(x)
|
| 160 |
cmd = len(z) + 10
|
| 161 |
+
include_manager = bool(udB.get_key("MANAGER") and udB.get_key("DUAL_HNDLR") == "/")
|
| 162 |
+
help_menu = _build_help_menu(include_settings=False, include_manager=include_manager)
|
| 163 |
return await ult.reply(
|
| 164 |
get_string("inline_4").format(
|
| 165 |
OWNER_NAME,
|
|
|
|
| 168 |
cmd,
|
| 169 |
),
|
| 170 |
file=inline_pic(),
|
| 171 |
+
buttons=help_menu,
|
| 172 |
)
|
| 173 |
except BotMethodInvalidError:
|
| 174 |
z = []
|
| 175 |
for x in LIST.values():
|
| 176 |
z.extend(x)
|
| 177 |
cmd = len(z) + 10
|
| 178 |
+
include_manager = bool(udB.get_key("MANAGER") and udB.get_key("DUAL_HNDLR") == "/")
|
| 179 |
+
help_menu = _build_help_menu(include_settings=False, include_manager=include_manager)
|
| 180 |
return await ult.reply(
|
| 181 |
get_string("inline_4").format(
|
| 182 |
OWNER_NAME,
|
|
|
|
| 185 |
cmd,
|
| 186 |
),
|
| 187 |
file=inline_pic(),
|
| 188 |
+
buttons=help_menu,
|
| 189 |
)
|
| 190 |
except BotResponseTimeoutError:
|
| 191 |
return await ult.eor(
|
plugins/_inline.py
CHANGED
|
@@ -32,7 +32,7 @@ from . import (
|
|
| 32 |
start_time,
|
| 33 |
udB,
|
| 34 |
)
|
| 35 |
-
from ._help import
|
| 36 |
|
| 37 |
# ================================================#
|
| 38 |
|
|
@@ -98,16 +98,18 @@ async def inline_handler(event):
|
|
| 98 |
len(HELP.get("Addons", [])),
|
| 99 |
len(z),
|
| 100 |
)
|
|
|
|
|
|
|
| 101 |
if inline_pic():
|
| 102 |
result = await event.builder.photo(
|
| 103 |
file=inline_pic(),
|
| 104 |
link_preview=False,
|
| 105 |
text=text,
|
| 106 |
-
buttons=
|
| 107 |
)
|
| 108 |
else:
|
| 109 |
result = await event.builder.article(
|
| 110 |
-
title="Ultroid Help Menu", text=text, buttons=
|
| 111 |
)
|
| 112 |
await event.answer([result], private=True, cache_time=300, gallery=True)
|
| 113 |
|
|
@@ -302,6 +304,8 @@ async def opner(event):
|
|
| 302 |
z = []
|
| 303 |
for x in LIST.values():
|
| 304 |
z.extend(x)
|
|
|
|
|
|
|
| 305 |
await event.edit(
|
| 306 |
get_string("inline_4").format(
|
| 307 |
OWNER_NAME,
|
|
@@ -309,7 +313,7 @@ async def opner(event):
|
|
| 309 |
len(HELP.get("Addons", [])),
|
| 310 |
len(z),
|
| 311 |
),
|
| 312 |
-
buttons=
|
| 313 |
link_preview=False,
|
| 314 |
)
|
| 315 |
|
|
|
|
| 32 |
start_time,
|
| 33 |
udB,
|
| 34 |
)
|
| 35 |
+
from ._help import _build_help_menu
|
| 36 |
|
| 37 |
# ================================================#
|
| 38 |
|
|
|
|
| 98 |
len(HELP.get("Addons", [])),
|
| 99 |
len(z),
|
| 100 |
)
|
| 101 |
+
# Build menu with settings if bot is available
|
| 102 |
+
help_menu = _build_help_menu(include_settings=True, include_manager=False)
|
| 103 |
if inline_pic():
|
| 104 |
result = await event.builder.photo(
|
| 105 |
file=inline_pic(),
|
| 106 |
link_preview=False,
|
| 107 |
text=text,
|
| 108 |
+
buttons=help_menu,
|
| 109 |
)
|
| 110 |
else:
|
| 111 |
result = await event.builder.article(
|
| 112 |
+
title="Ultroid Help Menu", text=text, buttons=help_menu
|
| 113 |
)
|
| 114 |
await event.answer([result], private=True, cache_time=300, gallery=True)
|
| 115 |
|
|
|
|
| 304 |
z = []
|
| 305 |
for x in LIST.values():
|
| 306 |
z.extend(x)
|
| 307 |
+
# Build menu with settings if bot is available
|
| 308 |
+
help_menu = _build_help_menu(include_settings=True, include_manager=False)
|
| 309 |
await event.edit(
|
| 310 |
get_string("inline_4").format(
|
| 311 |
OWNER_NAME,
|
|
|
|
| 313 |
len(HELP.get("Addons", [])),
|
| 314 |
len(z),
|
| 315 |
),
|
| 316 |
+
buttons=help_menu,
|
| 317 |
link_preview=False,
|
| 318 |
)
|
| 319 |
|
pyUltroid/_misc/_assistant.py
CHANGED
|
@@ -85,7 +85,16 @@ def callback(data=None, from_users=[], admins=False, owner=False, **kwargs):
|
|
| 85 |
except Exception as er:
|
| 86 |
LOGS.exception(er)
|
| 87 |
|
| 88 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 89 |
|
| 90 |
return ultr
|
| 91 |
|
|
|
|
| 85 |
except Exception as er:
|
| 86 |
LOGS.exception(er)
|
| 87 |
|
| 88 |
+
# Register on assistant bot if available
|
| 89 |
+
try:
|
| 90 |
+
is_bot = (hasattr(asst, "_bot") and asst._bot) or (hasattr(asst, "me") and hasattr(asst.me, "bot") and asst.me.bot)
|
| 91 |
+
if is_bot:
|
| 92 |
+
asst.add_event_handler(wrapper, CallbackQuery(data=data, **kwargs))
|
| 93 |
+
except Exception:
|
| 94 |
+
pass
|
| 95 |
+
|
| 96 |
+
# Also register on main userbot so buttons work without assistant bot
|
| 97 |
+
ultroid_bot.add_event_handler(wrapper, CallbackQuery(data=data, **kwargs))
|
| 98 |
|
| 99 |
return ultr
|
| 100 |
|