|
1 |
| -""" |
2 |
| -对子频道转跳进行操作(#name) |
3 |
| -注意: |
4 |
| -1、发送格式要求严格(#name ),自动添加的空格不能删除 |
5 |
| -2、无法识别真假转跳 |
6 |
| -3、当子频道重名时无法准确识别 |
7 |
| -4、当提供子频道转跳字段时请弃用本模块 |
8 |
| -""" |
9 |
| - |
10 |
| -__all__ = [ |
11 |
| - "get_channel_jump", |
12 |
| - "get_channel_jump_strict", |
13 |
| - "escape_channel_jump" |
14 |
| -] |
15 |
| - |
16 |
| -import re |
17 |
| -from typing import List, Dict |
18 |
| - |
19 |
| -from botpy import BotAPI |
20 |
| -from botpy.message import Message |
21 |
| - |
22 |
| - |
23 |
| -def get_channel_jump(text: str = None, message: Message = None) -> List[str]: |
24 |
| - """ |
25 |
| - 识别文本中的子频道转跳(粗略) |
26 |
| - :param message: 消息对象 |
27 |
| - :param text: 文本,为空则message.content |
28 |
| - :return: 子频道名称列表(不带#) |
29 |
| - """ |
30 |
| - channel_jump_re = re.compile(r"#(.{1,12}?)(?= )") |
31 |
| - return channel_jump_re.findall(message.content if text is None else text) |
32 |
| - |
33 |
| - |
34 |
| -async def get_channel_jump_strict(api: BotAPI, message: Message = None, text: str = None, |
35 |
| - guild_id: str = None) -> Dict[str, str]: |
36 |
| - """ |
37 |
| - 识别文本中的子频道转跳(准确) |
38 |
| - :param api: BotAPI |
39 |
| - :param message: 消息对象 |
40 |
| - :param text: 文本,为空则message.content |
41 |
| - :param guild_id: 频道id,为空则message.guild_id |
42 |
| - :return: {子频道名称(不带#):子频道id} (去重) |
43 |
| - """ |
44 |
| - channels = await api.get_channels(guild_id or message.guild_id) |
45 |
| - text = message.content if text is None else text |
46 |
| - jumps = {} |
47 |
| - |
48 |
| - for channel in channels: |
49 |
| - if "#%s " % channel["name"] in text: |
50 |
| - jumps[channel["name"]] = channel["id"] |
51 |
| - |
52 |
| - return jumps |
53 |
| - |
54 |
| - |
55 |
| -async def escape_channel_jump(api: BotAPI, message: Message = None, text: str = None, guild_id: str = None) -> str: |
56 |
| - """ |
57 |
| - 转义子频道转跳 (#name -> <#id>) |
58 |
| - :param api: BotAPI |
59 |
| - :param message: 消息对象 |
60 |
| - :param text: 文本,为空则message.content |
61 |
| - :param guild_id: 频道id,为空则message.guild_id |
62 |
| - :return: 转义后的文本 |
63 |
| - """ |
64 |
| - channels = await api.get_channels(guild_id or message.guild_id) |
65 |
| - text = message.content if text is None else text |
66 |
| - |
67 |
| - for channel in channels: |
68 |
| - text = text.replace("#%s " % channel["name"], "<#%s> " % channel["id"]) |
69 |
| - |
70 |
| - return text |
| 1 | +# -*- coding: utf-8 -*- |
| 2 | +""" |
| 3 | +对子频道转跳进行操作(#name) |
| 4 | +注意: |
| 5 | +1、发送格式要求严格(#name ),自动添加的空格不能删除 |
| 6 | +2、无法识别真假转跳 |
| 7 | +3、当子频道重名时无法准确识别 |
| 8 | +4、当提供子频道转跳字段时请弃用本模块 |
| 9 | +""" |
| 10 | + |
| 11 | +__all__ = [ |
| 12 | + "get_channel_jump", |
| 13 | + "get_channel_jump_strict", |
| 14 | + "escape_channel_jump" |
| 15 | +] |
| 16 | + |
| 17 | +import re |
| 18 | +from typing import List, Dict |
| 19 | + |
| 20 | +from botpy import BotAPI |
| 21 | +from botpy.message import Message |
| 22 | + |
| 23 | + |
| 24 | +def get_channel_jump(text: str = None, message: Message = None) -> List[str]: |
| 25 | + """ |
| 26 | + 识别文本中的子频道转跳(粗略) |
| 27 | + :param message: 消息对象 |
| 28 | + :param text: 文本,为空则message.content |
| 29 | + :return: 子频道名称列表(不带#) |
| 30 | + """ |
| 31 | + channel_jump_re = re.compile(r"#(.{1,12}?)(?= )") |
| 32 | + return channel_jump_re.findall(message.content if text is None else text) |
| 33 | + |
| 34 | + |
| 35 | +async def get_channel_jump_strict(api: BotAPI, message: Message = None, text: str = None, |
| 36 | + guild_id: str = None) -> Dict[str, str]: |
| 37 | + """ |
| 38 | + 识别文本中的子频道转跳(准确) |
| 39 | + :param api: BotAPI |
| 40 | + :param message: 消息对象 |
| 41 | + :param text: 文本,为空则message.content |
| 42 | + :param guild_id: 频道id,为空则message.guild_id |
| 43 | + :return: {子频道名称(不带#):子频道id} (去重) |
| 44 | + """ |
| 45 | + channels = await api.get_channels(guild_id or message.guild_id) |
| 46 | + text = message.content if text is None else text |
| 47 | + jumps = {} |
| 48 | + |
| 49 | + for channel in channels: |
| 50 | + if "#%s " % channel["name"] in text: |
| 51 | + jumps[channel["name"]] = channel["id"] |
| 52 | + |
| 53 | + return jumps |
| 54 | + |
| 55 | + |
| 56 | +async def escape_channel_jump(api: BotAPI, message: Message = None, text: str = None, guild_id: str = None) -> str: |
| 57 | + """ |
| 58 | + 转义子频道转跳 (#name -> <#id>) |
| 59 | + :param api: BotAPI |
| 60 | + :param message: 消息对象 |
| 61 | + :param text: 文本,为空则message.content |
| 62 | + :param guild_id: 频道id,为空则message.guild_id |
| 63 | + :return: 转义后的文本 |
| 64 | + """ |
| 65 | + channels = await api.get_channels(guild_id or message.guild_id) |
| 66 | + text = message.content if text is None else text |
| 67 | + |
| 68 | + for channel in channels: |
| 69 | + text = text.replace("#%s " % channel["name"], "<#%s> " % channel["id"]) |
| 70 | + |
| 71 | + return text |
0 commit comments