06-08-2026, 10:55 AM
KOOK Connector 常用函数教程
本教程只讲 kook-connector.inc 里的 KCC 函数,不讲 KCMD 指令系统。
一、发送消息到指定频道
先通过频道 ID 找到频道:
然后发送消息:
完整例子:
二、封装一个发送日志函数
使用:
三、发送格式化消息
使用 Pawn 自带的 format:
四、发送 Embed 卡片消息
创建一个 Embed:
发送 Embed:
完整例子:
五、给 Embed 添加字段
六、获取频道信息
获取频道 ID:
获取频道名称:
完整例子:
七、获取用户信息
如果你在 KOOK 消息回调里拿到了 user,可以这样获取用户名:
获取用户 ID:
八、接收 KOOK 消息
kook-connector.inc 提供消息创建回调:
注意:
如果项目已经使用 kook-cmd.inc,它也会 hook KCC_OnMessageCreate。多个系统同时使用这个回调时,需要注意 hook 顺序。
九、删除 KOOK 消息
如果在回调里拿到了 message,可以删除这条 KOOK 消息:
示例:
十、编辑消息
如果你拿到了 KCC_Message,可以编辑它:
十一、查找用户
通过 KOOK 用户 ID 查找用户:
通过用户名查找用户:
十二、查找服务器
通过服务器 ID:
通过服务器名称:
十三、获取服务器信息
十四、常用函数总结
发送频道消息:
查找频道:
创建 Embed:
发送 Embed:
添加 Embed 字段:
获取频道名称:
获取用户名称:
获取消息内容:
获取消息作者:
获取消息频道:
本教程只讲 kook-connector.inc 里的 KCC 函数,不讲 KCMD 指令系统。
一、发送消息到指定频道
先通过频道 ID 找到频道:
代码:
new KCC_Channel:channel = KCC_FindChannelById("你的频道ID");然后发送消息:
代码:
KCC_SendChannelMessage(channel, "服务器启动完成。");完整例子:
代码:
stock SendKookServerMessage()
{
new KCC_Channel:channel = KCC_FindChannelById("你的频道ID");
KCC_SendChannelMessage(channel, "服务器启动完成。");
return 1;
}二、封装一个发送日志函数
代码:
stock KCC_SendServerLog(const msg[])
{
new KCC_Channel:channel = KCC_FindChannelById("你的频道ID");
KCC_SendChannelMessage(channel, msg);
return 1;
}使用:
代码:
KCC_SendServerLog("管理员执行了一个操作。");三、发送格式化消息
使用 Pawn 自带的 format:
代码:
stock KCC_SendPlayerJoinLog(playerid)
{
new name[MAX_PLAYER_NAME + 1];
new message[128];
GetPlayerName(playerid, name, sizeof(name));
format(message, sizeof(message), "玩家 %s 加入了服务器。", name);
new KCC_Channel:channel = KCC_FindChannelById("你的频道ID");
KCC_SendChannelMessage(channel, message);
return 1;
}四、发送 Embed 卡片消息
创建一个 Embed:
代码:
new KCC_Embed:embed = KCC_CreateEmbed(
"标题",
"内容",
"",
"",
0x6495ED,
"页脚",
"",
"",
""
);发送 Embed:
代码:
KCC_SendChannelEmbedMessage(channel, embed);完整例子:
代码:
stock KCC_SendServerEmbedLog(const title[], const msg[])
{
new KCC_Channel:channel = KCC_FindChannelById("你的频道ID");
new KCC_Embed:embed = KCC_CreateEmbed(
title,
msg,
"",
"",
0x6495ED,
"页脚文字",
"",
"",
""
);
KCC_SendChannelEmbedMessage(channel, embed);
return 1;
}五、给 Embed 添加字段
代码:
stock KCC_SendServerInfo()
{
new KCC_Channel:channel = KCC_FindChannelById("你的频道ID");
new KCC_Embed:embed = KCC_CreateEmbed(
"服务器信息",
"服务器当前运行正常。",
"",
"",
0x6495ED,
"页脚文字",
"",
"",
""
);
KCC_AddEmbedField(embed, "服务器地址", "`127.0.0.1:7777`", true);
KCC_AddEmbedField(embed, "在线状态", "正常", true);
KCC_SendChannelEmbedMessage(channel, embed);
return 1;
}六、获取频道信息
获取频道 ID:
代码:
new channelId[KCC_ID_SIZE];
KCC_GetChannelId(channel, channelId, sizeof(channelId));获取频道名称:
代码:
new channelName[64];
KCC_GetChannelName(channel, channelName, sizeof(channelName));完整例子:
代码:
stock KCC_PrintChannelInfo()
{
new KCC_Channel:channel = KCC_FindChannelById("你的频道ID");
new channelId[KCC_ID_SIZE];
new channelName[64];
KCC_GetChannelId(channel, channelId, sizeof(channelId));
KCC_GetChannelName(channel, channelName, sizeof(channelName));
printf("[KOOK] Channel: %s (%s)", channelName, channelId);
return 1;
}七、获取用户信息
如果你在 KOOK 消息回调里拿到了 user,可以这样获取用户名:
代码:
new username[KCC_USERNAME_SIZE];
KCC_GetUserName(user, username, sizeof(username));获取用户 ID:
代码:
new userId[KCC_ID_SIZE];
KCC_GetUserId(user, userId, sizeof(userId));八、接收 KOOK 消息
kook-connector.inc 提供消息创建回调:
代码:
public KCC_OnMessageCreate(KCC_Message:message)
{
new content[256];
new reply[300];
new username[KCC_USERNAME_SIZE];
new KCC_User:user;
new KCC_Channel:channel;
KCC_GetMessageContent(message, content, sizeof(content));
KCC_GetMessageAuthor(message, user);
KCC_GetMessageChannel(message, channel);
KCC_GetUserName(user, username, sizeof(username));
format(reply, sizeof(reply), "%s 发送了: %s", username, content);
KCC_SendChannelMessage(channel, reply);
return 1;
}注意:
如果项目已经使用 kook-cmd.inc,它也会 hook KCC_OnMessageCreate。多个系统同时使用这个回调时,需要注意 hook 顺序。
九、删除 KOOK 消息
如果在回调里拿到了 message,可以删除这条 KOOK 消息:
代码:
KCC_DeleteMessage(message);示例:
代码:
public KCC_OnMessageCreate(KCC_Message:message)
{
new content[256];
KCC_GetMessageContent(message, content, sizeof(content));
if(!strcmp(content, "delete", true))
{
KCC_DeleteMessage(message);
}
return 1;
}十、编辑消息
如果你拿到了 KCC_Message,可以编辑它:
代码:
KCC_EditMessage(message, "新的消息内容");十一、查找用户
通过 KOOK 用户 ID 查找用户:
代码:
new KCC_User:user = KCC_FindUserById("用户ID");通过用户名查找用户:
代码:
new KCC_User:user = KCC_FindUserByName("用户名", "0000");十二、查找服务器
通过服务器 ID:
代码:
new KCC_Guild:guild = KCC_FindGuildById("服务器ID");通过服务器名称:
代码:
new KCC_Guild:guild = KCC_FindGuildByName("服务器名称");十三、获取服务器信息
代码:
stock KCC_PrintGuildInfo()
{
new KCC_Guild:guild = KCC_FindGuildById("服务器ID");
new guildId[KCC_ID_SIZE];
new guildName[64];
KCC_GetGuildId(guild, guildId, sizeof(guildId));
KCC_GetGuildName(guild, guildName, sizeof(guildName));
printf("[KOOK] Guild: %s (%s)", guildName, guildId);
return 1;
}十四、常用函数总结
发送频道消息:
代码:
KCC_SendChannelMessage(channel, "内容");查找频道:
代码:
KCC_FindChannelById("频道ID");创建 Embed:
代码:
KCC_CreateEmbed("标题", "内容", "", "", 0x6495ED, "页脚", "", "", "");发送 Embed:
代码:
KCC_SendChannelEmbedMessage(channel, embed);添加 Embed 字段:
代码:
KCC_AddEmbedField(embed, "名称", "内容", true);获取频道名称:
代码:
KCC_GetChannelName(channel, name, sizeof(name));获取用户名称:
代码:
KCC_GetUserName(user, name, sizeof(name));获取消息内容:
代码:
KCC_GetMessageContent(message, content, sizeof(content));获取消息作者:
代码:
KCC_GetMessageAuthor(message, user);获取消息频道:
代码:
KCC_GetMessageChannel(message, channel);
