如何实现机器人提及命令消息中被@的指定用户
!kill 指令功能实现方案
核心实现逻辑
不管你用什么机器人开发框架,核心逻辑都是一致的:
- 监听所有用户发送的消息内容
- 用正则表达式匹配
!kill @被提及用户格式的指令,不同平台的@格式存在差异,需要根据你对接的平台调整匹配规则 - 从匹配成功的结果中提取出被@的用户标识(用户名/用户ID)
- 拼接回复内容后发送到对应聊天窗口即可
正则匹配参考
如果是@后直接跟用户名的场景(比如Telegram、部分自定义平台),可以用如下正则:^!kill\s+@([a-zA-Z0-9_]+)\s*$
如果是Discord这类平台,@会被封装为带ID的特殊格式,正则可以调整为:^!kill\s+<@!?(\d+)>\s*$
极简可运行示例(Python)
import re def process_user_msg(msg: str) -> str | None: # 这里用普通用户名格式的正则做示例,按需修改即可 kill_cmd_pattern = r"^!kill\s+@(\w+)\s*$" match_res = re.match(kill_cmd_pattern, msg.strip()) if match_res: target = match_res.group(1) return f"@{target} is dead now." # 不是目标指令就返回空,不处理 return None # 测试 if __name__ == "__main__": test_msg = "!kill @zhang3" reply = process_user_msg(test_msg) if reply: print(reply) # 输出:@zhang3 is dead now.
可选优化项
- 增加权限校验,仅允许管理员/特定权限用户使用该指令
- 增加指令冷却时间,避免用户反复刷指令刷屏
- 可以添加随机回复模板,增加趣味性
内容的提问来源于stack exchange,提问作者Hydraulic
相关产品推荐
相关产品推荐

