reykit 1.0.0__py3-none-any.whl → 1.0.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
reywechat/rschedule.py ADDED
@@ -0,0 +1,136 @@
1
+ # !/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+
4
+ """
5
+ @Time : 2024-01-09 21:47:02
6
+ @Author : Rey
7
+ @Contact : reyxbo@163.com
8
+ @Explain : Schedule methods.
9
+ """
10
+
11
+
12
+ from __future__ import annotations
13
+ from typing import Any, Literal, Union
14
+ from collections.abc import Callable
15
+ from reykit.rschedule import RSchedule as RRSchedule
16
+
17
+ from .rsend import RSendParam
18
+ from .rwechat import RWeChat
19
+
20
+
21
+ class RSchedule(object):
22
+ """
23
+ Rey's `schedule` type.
24
+ """
25
+
26
+
27
+ def __init__(
28
+ self,
29
+ rwechat: RWeChat
30
+ ) -> None:
31
+ """
32
+ Build `schedule` attributes.
33
+
34
+ Parameters
35
+ ----------
36
+ rwechat : `RClient` instance.
37
+ """
38
+
39
+ # Set attribute.
40
+ self.rwechat = rwechat
41
+ self.rrschedule = RRSchedule()
42
+
43
+ # Start.
44
+ self.rrschedule.start()
45
+
46
+
47
+ def send(
48
+ self,
49
+ trigger: Literal['date', 'interval', 'cron'],
50
+ trigger_kwargs: dict,
51
+ send_type: Literal[0, 1, 2, 3, 4, 5, 6, 7],
52
+ receive_id: str,
53
+ **params: Union[Callable[[], Any], Any]
54
+ ) -> None:
55
+ """
56
+ Schedule send message.
57
+
58
+ Parameters
59
+ ----------
60
+ trigger : Trigger type.
61
+ trigger_kwargs : Trigger keyword arguments.
62
+ send_type : Send type.
63
+ - `Literal[0]` Send text message, use `RClient.send_text`: method.
64
+ - `Literal[1]` Send text message with `@`, use `RClient.send_text_at`: method.
65
+ - `Literal[2]` Send file message, use `RClient.send_file`: method.
66
+ - `Literal[3]` Send image message, use `RClient.send_image`: method.
67
+ - `Literal[4]` Send emotion message, use `RClient.send_emotion`: method.
68
+ - `Literal[5]` Send pat message, use `RClient.send_pat`: method.
69
+ - `Literal[6]` Send public account message, use `RClient.send_public`: method.
70
+ - `Literal[7]` Forward message, use `RClient.send_forward`: method.
71
+ receive_id : User ID or chat room ID of receive message.
72
+ params : Send parameters.
73
+ - `Callable`: Use execute return value.
74
+ - `Any`: Use this value.
75
+ """
76
+
77
+ # Get parameter.
78
+ kwargs = {
79
+ 'send_type': send_type,
80
+ 'receive_id': receive_id,
81
+ **params
82
+ }
83
+
84
+ # Add.
85
+ self.rrschedule.add_task(
86
+ self.rwechat.rsend.send,
87
+ trigger,
88
+ kwargs=kwargs,
89
+ **trigger_kwargs
90
+ )
91
+
92
+
93
+ def add(
94
+ self,
95
+ trigger: Literal['date', 'interval', 'cron'],
96
+ task: Callable[[RSchedule], Any],
97
+ **trigger_kwargs: Any
98
+ ) -> None:
99
+ """
100
+ Add schedule send message task.
101
+
102
+ Parameters
103
+ ----------
104
+ trigger : Trigger type.
105
+ task : Function of task. The parameter is the `RSchedule` instance.
106
+ trigger_kwargs : Trigger keyword arguments.
107
+ """
108
+
109
+ # Get parameter.
110
+ args = (self,)
111
+
112
+ # Add.
113
+ self.rrschedule.add_task(
114
+ task,
115
+ trigger,
116
+ args,
117
+ **trigger_kwargs
118
+ )
119
+
120
+
121
+ def pause(self) -> None:
122
+ """
123
+ Pause scheduler.
124
+ """
125
+
126
+ # Pause.
127
+ self.rrschedule.pause()
128
+
129
+
130
+ def resume(self) -> None:
131
+ """
132
+ Resume scheduler.
133
+ """
134
+
135
+ # Pause.
136
+ self.rrschedule.resume