Skip to content

Commit a2d952d

Browse files
committed
Track callback event_name separately
Track the callback -> event_name separately without hitchhiking on the generic Callable callback object closes #296 Fix typo
1 parent b2341b7 commit a2d952d

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

twitchio/client.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
import logging
2929
import traceback
3030
import sys
31-
from typing import Union, Callable, List, Optional, Tuple, Any, Coroutine
31+
from typing import Union, Callable, List, Optional, Tuple, Any, Coroutine, Dict
3232

3333
from twitchio.errors import HTTPException
3434
from . import models
@@ -98,6 +98,7 @@ def __init__(
9898

9999
self._events = {}
100100
self._waiting: List[Tuple[str, Callable[[...], bool], asyncio.Future]] = []
101+
self.registered_callbacks: Dict[Callable, str] = {}
101102

102103
@classmethod
103104
def from_client_credentials(
@@ -234,7 +235,7 @@ def add_event(self, callback: Callable, name: str = None) -> None:
234235
raise ValueError("Event callback must be a coroutine")
235236

236237
event_name = name or callback.__name__
237-
callback._event = event_name # used to remove the event
238+
self.registered_callbacks[callback] = event_name
238239

239240
if event_name in self._events:
240241
self._events[event_name].append(callback)
@@ -243,11 +244,13 @@ def add_event(self, callback: Callable, name: str = None) -> None:
243244
self._events[event_name] = [callback]
244245

245246
def remove_event(self, callback: Callable) -> bool:
246-
if not hasattr(callback, "_event"):
247+
event_name = self.registered_callbacks.get(callback)
248+
249+
if event_name is None:
247250
raise ValueError("Event callback is not a registered event")
248251

249-
if callback in self._events[callback._event]:
250-
self._events[callback._event].remove(callback)
252+
if callback in self._events[event_name]:
253+
self._events[event_name].remove(callback)
251254
return True
252255

253256
return False

twitchio/ext/pubsub/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,7 @@ class PubSubChannelSubscribe(PubSubMessage):
360360
message: :class:`str`
361361
Message sent with the sub/resub.
362362
emotes: Optional[List[:class:`dict`]]
363-
Message sent with the sub/resub.
363+
Emotes sent with the sub/resub.
364364
is_gift: :class:`bool`
365365
If this sub message was caused by a gift subscription.
366366
recipient: Optional[:class:`twitchio.PartialUser`]

0 commit comments

Comments
 (0)