编写教程
呃,因为教程这方面很复杂,所以先看着例子自己写写吧,后续一定会写的,不会这么摆烂的(
python
import time
from tooldelta.Frame import Config
from tooldelta.plugin_load.injected_plugin import player_left, player_message
from tooldelta.plugin_load.injected_plugin.movent import get_all_player, is_op
from tooldelta import plugins
__plugin_meta__ = {
"name": "发言频率",
"version": "0.0.1",
"author": "wling/7912",
}
STD_BAN_CFG = {"时间内": int, "在时间内达到多少条": int}
DEFAULT_BAN_CFG = {
"时间内": 3,
"在时间内达到多少条": 6,
}
cfg, cfg_version = Config.getPluginConfigAndVersion(
__plugin_meta__["name"],
STD_BAN_CFG,
DEFAULT_BAN_CFG,
__plugin_meta__["version"].split("."),
)
playerMsgTimeDict = {}
msgSendNunMaxPerTime = cfg["时间内"]
msgSendNumMax = cfg["在时间内达到多少条"]
ban_plugin = plugins.get_plugin_api("封禁系统")
ban = ban_plugin.ban
@player_message()
async def _(playername: str, *arg):
if is_op(playername) and playername in get_all_player():
msgSendTime = time.time()
if playername not in playerMsgTimeDict:
playerMsgTimeDict[playername] = []
for i in playerMsgTimeDict[playername][:]:
if i <= msgSendTime - msgSendNunMaxPerTime:
playerMsgTimeDict[playername].remove(i)
playerMsgTimeDict[playername].append(msgSendTime)
if len(playerMsgTimeDict[playername]) >= msgSendNumMax:
# 生成时间戳,比现在多五分钟,传参给
# ban(playername, int(time.time()) + 300, "发信息过快")
ban(playername, int(time.time()) + 300, "发信息过快")
playerMsgTimeDict[playername] = []
@player_left()
async def _(playername: str):
if playername in playerMsgTimeDict:
del playerMsgTimeDict[playername]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54