# 消息的发送

# 发送消息到特定的上下文

你可以使用 echo 指令发送消息到特定的上下文:

echo [-u ids] [-g ids] [-d ids] <text...>
echo foo bar              # 向你发送 foo bar
echo -u 123 foo bar       # 向用户 123 私聊发送 foo bar
echo -g 456,789 foo bar   # 向群 456 和 789 同时发送 foo bar

提示

echo 指令的消息是一个 长参数,因此你应该把所有的选项写到消息前面,否则会被认为是消息的一部分。

# 向所有群广播消息

broadcast 指令用于按照 assignee 字段向所有 Bot 所负责的群发送一段文本。你可以这样调用它:

broadcast foo bar baz     # 向所有群发送 foo bar baz

这看起来只是 echo 的一个简写版本,但实际上这两个指令有下面的差别:

指令 echo broadcast
输出上下文 可自行指定任意上下文 所有 Bot 负责的所有群
需要数据库
支持多 App
发送间隔 同时 可自行指定时间间隔

# 指定发送间隔

如果你的机器人加了很多群,你可能希望指定发送间隔以避免封号:

koishi.config.js
module.exports = {
  plugins: [['common', {
    broadcastInterval: 1000, // 默认值为 1s
  }]],
}

# 模拟其他上下文发送信息

与上面的两个指令相反,contextify 指令可以让你临时切换上下文调用指令。例如你在私聊上下文:

teach foo bar                       # 无效,因为 teach 指令只对群上下文生效
contextify -g 456 teach foo bar     # 有效,相当于在群 456 调用 teach foo bar

除此以外,你还可以模拟其他上下文调用(假设你现在在群 123 中调用指令):

ctxf -g 456 command                 # 模拟你在群 456 的上下文
ctxf -d 456 command                 # 模拟你在讨论组 456 的上下文
ctxf -u 789 command                 # 模拟用户 789 的私聊上下文
ctxf -m 789 command                 # 模拟用户 789 在当前群的上下文
ctxf -u 789 -g 456 command          # 模拟用户 789 在群 456 的上下文
ctxf -u 789 -d 456 command          # 模拟用户 789 在讨论组 456 的上下文

尽管切换了调用上下文,但 contextify 指令的输出仍然产生在原上下文中。这在你想调用群指令的时候是很有用的。

提示

为了安全性考虑,contextify 命令设计的最低使用权限为 3 级,同时切换的用户等级不能高于或等于调用者自身。