dragxd commited on
Commit
d3100d7
·
1 Parent(s): a6d0535

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 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
- _main_help_menu = [
22
- [
23
- Button.inline(get_string("help_4"), data="uh_Official_"),
24
- Button.inline(get_string("help_5"), data="uh_Addons_"),
25
- ],
26
- [
 
 
 
 
 
 
 
 
27
  Button.inline(get_string("help_6"), data="uh_VCBot_"),
28
  Button.inline(get_string("help_7"), data="inlone"),
29
- ],
30
- [
31
- Button.inline(get_string("help_8"), data="ownr"),
32
- Button.url(
33
- get_string("help_9"), url=f"https://t.me/{asst.me.username}?start=set"
34
- ),
35
- ],
36
- [Button.inline(get_string("help_10"), data="close")],
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
- if udB.get_key("MANAGER") and udB.get_key("DUAL_HNDLR") == "/":
126
- _main_help_menu[2:3] = [[Button.inline("• Manager Help •", "mngbtn")]]
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=_main_help_menu,
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
- if udB.get_key("MANAGER") and udB.get_key("DUAL_HNDLR") == "/":
146
- _main_help_menu[2:3] = [[Button.inline("• Manager Help •", "mngbtn")]]
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=_main_help_menu,
156
  )
157
  except BotMethodInvalidError:
158
  z = []
159
  for x in LIST.values():
160
  z.extend(x)
161
  cmd = len(z) + 10
162
- if udB.get_key("MANAGER") and udB.get_key("DUAL_HNDLR") == "/":
163
- _main_help_menu[2:3] = [[Button.inline("• Manager Help •", "mngbtn")]]
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=_main_help_menu,
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 _main_help_menu
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=_main_help_menu,
107
  )
108
  else:
109
  result = await event.builder.article(
110
- title="Ultroid Help Menu", text=text, buttons=_main_help_menu
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=_main_help_menu,
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
- asst.add_event_handler(wrapper, CallbackQuery(data=data, **kwargs))
 
 
 
 
 
 
 
 
 
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