Skip to content

Commit 662ef41

Browse files
dnns01dnns01
andauthored
Handle commands in replies without changing message.content (#308)
* Fix message content while handling reply messages * Handle commands in replies without changing message.content Co-authored-by: dnns01 <[email protected]>
1 parent 1559d1a commit 662ef41

File tree

2 files changed

+10
-11
lines changed

2 files changed

+10
-11
lines changed

docs/changelog.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ Master
55
- TwitchIO
66
- Bug fixes
77
- Added ``self.registered_callbacks = {}`` to Bot and :func:`Client.from_client_credentials`
8-
- Fixed message content while handling commands in reply messages
98
- Add duration attribute to :class:`twitchio.Clip`
109

1110
- ext.commands
1211
- Bug fixes
1312
- Add type conversion for variable positional arguments
13+
- Fixed message content while handling commands in reply messages
1414

1515
- ext.pubsub
1616
- Bug fixes

twitchio/ext/commands/bot.py

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -171,12 +171,14 @@ async def __get_prefixes__(self, message):
171171
async def get_prefix(self, message):
172172
# TODO Docs
173173
prefixes = await self.__get_prefixes__(message)
174-
174+
message_content = message.content
175+
if "reply-parent-msg-id" in message.tags:
176+
message_content = message_content.split(" ", 1)[1]
175177
if not isinstance(prefixes, str):
176178
for prefix in prefixes:
177-
if message.content.startswith(prefix):
179+
if message_content.startswith(prefix):
178180
return prefix
179-
elif message.content.startswith(prefixes):
181+
elif message_content.startswith(prefixes):
180182
return prefixes
181183
else:
182184
return None
@@ -287,7 +289,10 @@ async def get_context(self, message, *, cls=None):
287289
prefix = await self.get_prefix(message)
288290
if not prefix:
289291
return cls(message=message, prefix=prefix, valid=False, bot=self)
290-
content = message.content[len(prefix) : :].lstrip() # Strip prefix and remainder whitespace
292+
content = message.content
293+
if "reply-parent-msg-id" in message.tags: # Remove @username from reply message
294+
content = content.split(" ", 1)[1]
295+
content = content[len(prefix) : :].lstrip() # Strip prefix and remainder whitespace
291296
view = StringParser()
292297
parsed = view.process_string(content) # Return the string as a dict view
293298

@@ -329,15 +334,9 @@ async def handle_commands(self, message):
329334
The message object to get content of and context for.
330335
331336
"""
332-
original_content = message.content
333-
334-
if "reply-parent-msg-id" in message.tags:
335-
message.content = message.content.split(" ", 1)[1]
336337
context = await self.get_context(message)
337338
await self.invoke(context)
338339

339-
message.content = original_content
340-
341340
async def invoke(self, context):
342341
# TODO Docs
343342
if not context.prefix or not context.is_valid:

0 commit comments

Comments
 (0)