Skip to content

Commit bb34581

Browse files
authored
feat: add args, kwargs to task (#1478)
* modified: interactions/models/internal/tasks/task.py * reset to set_last_call_time Signed-off-by: kennhh <133614589+kennhh@users.noreply.github.com> --------- Signed-off-by: kennhh <133614589+kennhh@users.noreply.github.com>
1 parent 61f34d8 commit bb34581

File tree

1 file changed

+11
-11
lines changed
  • interactions/models/internal/tasks

1 file changed

+11
-11
lines changed

interactions/models/internal/tasks/task.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -75,25 +75,25 @@ def on_error(self, error: Exception) -> None:
7575
self.on_error_sentry_hook(error)
7676
interactions.Client.default_error_handler("Task", error)
7777

78-
async def __call__(self) -> None:
78+
async def __call__(self, *args, **kwargs) -> None:
7979
try:
8080
if inspect.iscoroutinefunction(self.callback):
81-
val = await self.callback()
81+
val = await self.callback(*args, **kwargs)
8282
else:
83-
val = self.callback()
83+
val = self.callback(*args, **kwargs)
8484

8585
if isinstance(val, BaseTrigger):
8686
self.reschedule(val)
8787
except Exception as e:
8888
self.on_error(e)
8989

90-
def _fire(self, fire_time: datetime) -> None:
90+
def _fire(self, fire_time: datetime, *args, **kwargs) -> None:
9191
"""Called when the task is being fired."""
9292
self.trigger.set_last_call_time(fire_time)
93-
_ = asyncio.create_task(self())
93+
_ = asyncio.create_task(self(*args, **kwargs))
9494
self.iteration += 1
9595

96-
async def _task_loop(self) -> None:
96+
async def _task_loop(self, *args, **kwargs) -> None:
9797
"""The main task loop to fire the task at the specified time based on triggers configured."""
9898
while not self._stop.is_set():
9999
fire_time = self.trigger.next_fire()
@@ -106,14 +106,14 @@ async def _task_loop(self) -> None:
106106
if future in done:
107107
return None
108108

109-
self._fire(fire_time)
109+
self._fire(fire_time, *args, **kwargs)
110110

111-
def start(self) -> None:
111+
def start(self, *args, **kwargs) -> None:
112112
"""Start this task."""
113113
try:
114114
self.trigger.reschedule()
115115
self._stop.clear()
116-
self.task = asyncio.create_task(self._task_loop())
116+
self.task = asyncio.create_task(self._task_loop(*args, **kwargs))
117117
except RuntimeError:
118118
get_logger().error(
119119
"Unable to start task without a running event loop! We recommend starting tasks within an `on_startup` event."
@@ -125,10 +125,10 @@ def stop(self) -> None:
125125
if self.task:
126126
self.task.cancel()
127127

128-
def restart(self) -> None:
128+
def restart(self, *args, **kwargs) -> None:
129129
"""Restart this task."""
130130
self.stop()
131-
self.start()
131+
self.start(*args, **kwargs)
132132

133133
def reschedule(self, trigger: BaseTrigger) -> None:
134134
"""

0 commit comments

Comments
 (0)