Skip to content

Commit 296f36f

Browse files
committed
mmmmmh
1 parent e60bce0 commit 296f36f

File tree

5 files changed

+93
-53
lines changed

5 files changed

+93
-53
lines changed

bot.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import logging
2+
from typing import Union
3+
from discord_slash import SlashCommand, SlashContext, ComponentContext, MenuContext
4+
from discord_slash.model import ContextMenuType, ButtonStyle
5+
from discord_slash.utils.manage_components import create_actionrow, create_button
6+
from discord import Intents
7+
from discord.ext.commands import Bot
8+
9+
bot = Bot(
10+
command_prefix="/",
11+
help_command=None,
12+
intents=Intents.default()
13+
)
14+
slash = SlashCommand(
15+
bot,
16+
sync_commands=False
17+
)
18+
log = logging.Logger(name="errors.log", level=logging.DEBUG)
19+
20+
bot.load_extension("cog")
21+
22+
@bot.event
23+
async def on_ready():
24+
print("we're live!")
25+
26+
@bot.event
27+
async def on_slash_command_error(ctx, ex):
28+
log.debug(ctx)
29+
log.debug(ex)
30+
31+
@slash.slash(name="testcmd", guild_ids=[852402668294766612])
32+
async def testcmd(ctx: SlashContext):
33+
await ctx.send("test2!")
34+
35+
@slash.context_menu(ContextMenuType.USER, name="Testing User Space", guild_ids=[852402668294766612])
36+
async def testuser(ctx: MenuContext):
37+
await ctx.send("test!")
38+
39+
@slash.context_menu(ContextMenuType.MESSAGE, name="Testing Name Space", guild_ids=[852402668294766612])
40+
async def testmsg(ctx: Union[ComponentContext, MenuContext]):
41+
print(ctx.target)
42+
await ctx.defer()
43+
await ctx.send(ctx.target["message"]["content"])
44+
45+
bot.run("Mzc5MzQzMzIyNTQ1NzgyNzg0.WgiY_w.8Mxf0hEjruTUs5SQDpKhOxUPquk", bot=True, reconnect=True)

cog.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
from discord_slash.context import MenuContext
2+
from discord.ext.commands import Cog
3+
from discord.ext.commands.context import Context
4+
from discord_slash import cog_ext
5+
from discord_slash.model import ContextMenuType
6+
7+
class Cog(Cog):
8+
def __init__(self, bot):
9+
self.bot = bot
10+
11+
@cog_ext.cog_context_menu(name="Testing My Sep", guild_ids=[852402668294766612], target=ContextMenuType.MESSAGE)
12+
async def cog_testing(self, ctx: MenuContext):
13+
await ctx.send("test!")
14+
15+
def setup(bot):
16+
bot.add_cog(Cog(bot))

discord_slash/client.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,6 @@ async def to_dict(self):
281281
cmds = {"global": [], "guild": {x: [] for x in all_guild_ids}}
282282
wait = {} # Before merging to return dict, let's first put commands to temporary dict.
283283
for x in self.commands:
284-
285284
if x == "context":
286285
# handle context menu separately.
287286
for _x in self.commands["context"]: # x is the new reference dict

discord_slash/context.py

Lines changed: 31 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -265,28 +265,13 @@ async def send(
265265
for file in files:
266266
file.close()
267267
if not hidden:
268-
try:
269-
self.menu_messages = (
270-
self.data["resolved"]["messages"] if "resolved" in self.data.keys() else None
271-
)
272-
except: # noqa
273-
self.menu_messages = None
274-
if self.menu_messages:
275-
smsg = model.SlashMessage(
276-
state=self.bot._connection,
277-
data=resp,
278-
channel=self.channel or discord.Object(id=self.channel_id),
279-
_http=self._http,
280-
interaction_token=self._token,
281-
)
282-
else:
283-
smsg = model.SlashMessage(
284-
state=self.bot._connection,
285-
data=resp,
286-
channel=self.channel or discord.Object(id=self.channel_id),
287-
_http=self._http,
288-
interaction_token=self._token,
289-
)
268+
smsg = model.SlashMessage(
269+
state=self.bot._connection,
270+
data=resp,
271+
channel=self.channel or discord.Object(id=self.channel_id),
272+
_http=self._http,
273+
interaction_token=self._token,
274+
)
290275
if delete_after:
291276
self.bot.loop.create_task(smsg.delete(delay=delete_after))
292277
if initial_message:
@@ -670,43 +655,38 @@ def __init__(
670655
logger,
671656
):
672657
super().__init__(_http=_http, _json=_json, _discord=_discord, logger=logger)
673-
self.target_id = self.data["target_id"]
674658
self.context_type = _json["type"]
675659
self._resolved = self.data["resolved"] if "resolved" in self.data.keys() else None
660+
self.target = {"id": self.data["target_id"], "message": None}
676661

677-
try:
678-
self.menu_authors = (
679-
self.data["resolved"]["members"] if "resolved" in self.data.keys() else None
680-
)
681-
except: # noqa
682-
self.menu_authors = None
683-
684-
self.context_message = (
685-
[msg for msg in self.menu_messages][0] if self.menu_messages is not None else []
686-
)
687-
self.context_author = (
688-
[user for user in self.menu_authors][0] if self.menu_authors is not None else []
689-
)
690-
691-
if self.guild and self.context_author:
692-
print(self.context_author)
693-
self.context_author = discord.Member(
694-
data=self.context_author, state=self.bot._connection, guild=self.guild
695-
)
696-
697-
try:
698-
if self.menu_messages is None:
699-
self.menu_messages = model.SlashMessage(
662+
if self._resolved is not None:
663+
if self.context_type in [3, "3"]:
664+
self.target["message"] = model.SlashMessage(
700665
state=self.bot._connection,
701666
channel=_discord.get_channel(self.channel_id),
702-
data=self.context_message,
667+
data=[msg for msg in self._resolved["messages"]][0],
703668
_http=_http,
704669
interaction_token=self._token,
705670
)
706-
else:
707-
raise KeyError
708-
except: # noqa
709-
return
671+
672+
try:
673+
if self.guild and self._resolved["members"]:
674+
_member = True
675+
self.target["author"] = discord.Member(
676+
data=[auth for auth in self._resolved["members"]][0],
677+
state=self.bot._connection,
678+
guild=self.guild
679+
)
680+
except KeyError: # noqa
681+
pass
682+
try:
683+
if self._resolved["users"]:
684+
self.target["author"] = discord.User(
685+
data=[auth for auth in self._resolved["users"]][0],
686+
state=self.bot_connection
687+
)
688+
except KeyError: # noqa
689+
pass
710690

711691
@property
712692
def cog(self) -> typing.Optional[commands.Cog]:

discord_slash/model.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@ class CommandObject(CallbackObject):
311311

312312
def __init__(self, name, cmd, _type=1): # Let's reuse old command formatting.
313313
super().__init__(cmd["func"])
314-
self.name = name.lower()
314+
self.name = name.lower() if _type == 1 else name
315315
self.description = cmd["description"]
316316
self.allowed_guild_ids = cmd["guild_ids"] or []
317317
self.options = cmd["api_options"] or []

0 commit comments

Comments
 (0)