Moodow
发布于

接入微信的一个小问题

拉到微信群后,如果用户a开启了某个act,用户b也可以对该act进行输入操作,并且不论是谁提供的输入,机器人都会@a。

我能想到的几种解决办法:

  1. 最简单的限制,记录开启act的用户,暂时屏蔽其他用户输入操作;
  2. 复杂一点的办法,记录最后输入的用户,回复时@最后输入的用户,但对于多线程的方法,这种可能会存在a和b同时输入,两条都回复b的情况;
  3. 资源消耗较大的方法,对于不同的用户开启不同的线程进行回复,这样可以达到不同用户同时开启多个act的效果,不同用户之间的act互不影响;
  4. 最复杂的办法,在nact的用户输入方法中,将“输入用户”也作为输出参数之一;在nact的发送消息方法中,可以指定用户回复。

希望能有所帮助。

浏览 (247)
点赞 (1)
收藏
3条评论
承宗
承宗
在微信群中是谁@星伴,返回的结果就会@谁, 举例: A@星伴,返回的结果就会@A B@星伴,返回的结果就会@B 麻烦您在微信群联系一下开发人员,帮您排查解决一下这个问题
点赞
评论
Moodow
算了,不太想加微信群。可以描述下怎么复现。 1. 创建一个简单的输入、回复的act,如: nact.k_message_send("动作开始") input = nact.k_ask_for_answer("输入") nact.k_message_send("收到:"+input) nact.k_message_send("动作结束") 2. 由A在微信群中使用关键字触发该动作,星伴的“动作开始”和“请问:输入”将会@A 3. 由B在微信群中@星伴并输入回复 4. 星伴的“收到:……”依然会@A 我的观察是,同一个ACT中,星伴只会@触发者
点赞
评论
程序猿小白菜
程序猿小白菜
有代码示例么,感谢大佬!
点赞
评论
Moodow
什么代码示例?
点赞
评论
Moodow
Moodow
我也理解对于kos来说,所有微信用户其实都是同一个kmind用户,比如我(Moodow),所以难以进行区分。只是说如果能区分体验可能会更好一些。
点赞
评论