Kik Node API
A chatting API for kik built with Node.js, based on https://github.com/tomer8007/kik-bot-api-unofficial
THIS IS NOT AN OFFICIAL API
Installation
NPM:
npm i kik-node-api
Usage
Events
- The Basics
- Group Events
- Private Events
Requests
- Common Requests
- Group Requests
- Private Requests
Getting Started
You can use the API by creating an instance of KikClient
, you'll use it to listen
to events and send requests to kik
const KikClient = require("kik-node-api");
Kik = new KikClient({
username: "username",
password: "1234",
promptCaptchas: true,
trackUserInfo: true,
trackFriendInfo: true
});
Kik.connect()
username
: your kik account's username
password
: your kik account's password
promptCaptchas
: prompt in the console to solve captchas. If not you must handle it yourself using the event
trackUserInfo
: track users and return their usernames and display names in the events when possible
trackFriendInfo
: track friends and return their usernames and display names in the events when possible
All users are represented in a js object that looks like this:
user: {
jid: "kikteam@talk.kik.com",
username: "kikteam",
displayName: "Kik Team",
pic: "http://profilepics.cf.kik.com/luN9IXX3a4sks-RzyiC7xlK-HdE"
}
groups are represented in the following js object:
group: {
jid: "1100221067977_g@groups.kik.com",
code: "#kikbotapi",
name: "Kik Bot API Unofficial",
users: ["jid1", "jid2", "jid3"]
}
private groups have a code of null
Events
The Basics
KikClient
uses Node's Event Emitter class
to handle events, all events are attached in the following way:
Kik.on(eventname, (param1, param2) => {
})
Below are the details of all events emitted by the KikClient
class
Authenticated
Kik.on("authenticated", () => {
console.log("Authenticated")
})
Received Roster
Kik.on("receivedroster", (groups, friends) => {
console.log(groups);
console.log(friends)
})
groups
: an array of group
objects representing the groups you are in
friends
: an array of user
objects, each representing a friend
Received Captcha
Kik.on("receivedcaptcha", (captchaUrl) => {
console.log("Please solve captcha" + captchaUrl)
})
captchaUrl
: url to the captcha page
Received JID Info
Kik.on("receivedjidinfo", (users) => {
console.log("We got peer info:");
console.log(users)
})
users
: an array of user
objects returned as a result of requesting jids
Group Events
Received Group Message
Kik.on("receivedgroupmsg", (group, sender, msg) => {
console.log(`Received message from ${sender.jid} in group ${group.jid}`)
})
group
: a group
object representing the group where the message was sent
sender
: a user
object representing the message sender
msg
: the received message
Received Group Image
Kik.on("receivedgroupimg", (group, sender, img) => {
console.log(`Received image from ${sender.jid} in group ${group.jid}`)
})
group
: a group
object representing the group where the message was sent
sender
: a user
object representing the message sender
img
: a buffer
object representing the image
Group is Typing
Kik.on("grouptyping", (group, sender, isTyping) => {
if(isTyping){
console.log(`${sender.jid} is typing in ${group.jid}`)
}else{
console.log(`${sender.jid} stopped typing in ${group.jid}`)
}
})
group
: a group
object representing the group where the message was sent
sender
: a user
object representing the message sender
isTyping
: true if the user is typing, false if he stopped
User Left Group
Kik.on("userleftgroup", (group, user, kickedBy) => {
console.log(`${user.jid} left the group: ${group.jid}`)
})
group
: a group
object representing the group
user
: WIP
kickedBy
: WIP
User Joined Group
Kik.on("userjoinedgroup", (group, user, invitedBy) => {
console.log(`${user.jid} joined the group: ${group.jid}`)
})
group
: a group
object representing the group
user
: WIP
invitedBy
: WIP
Private Events
Received Private Message
Kik.on("receivedprivatemsg", (sender, msg) => {
console.log(`Received message from ${sender.jid}`)
})
sender
: a user
object representing the message sender
msg
: the received message
Received Private Image
Kik.on("receivedprivateimg", (sender, img) => {
console.log(`Received image from ${sender.jid}`)
})
sender
: a user
object representing the message sender
img
: a buffer
object representing the image
Private Is Typing
Kik.on("privatetyping", (sender, isTyping) => {
if(isTyping){
console.log(`${sender.jid} is typing`)
}else{
console.log(`${sender.jid} stopped typing`)
}
})
sender
: a user
object representing the message sender
isTyping
: true if the user is typing, false if he stopped
Requests
Note that all callback functions can be excluded
Common Requests
You can provide a group's or a user's jid, they will automatically use
the appropriate format
Send Message
Kik.sendMessage(jid, msg, (delivered, read) => {
if(delivered){
console.log("Delivered")
}else if(read){
console.log("Read")
}
})
Send Image
Kik.sendImage(jid, imgPath, allowForwarding, allowSaving)
allowForwarding
: boolean, if false this image will not give the
receiver a forwarding option. true by default
allowSaving
: boolean, if false this image will not give the
receiver a download option. true by default
returns a promise, make sure to use this inside an async function with the await keyword
Group Requests
Kick/Add
Kik.setGroupMember(groupJid, userJid, bool)
Promote/Demote
Kik.setAdmin(groupJid, userJid, bool)
Ban/Unban
Kik.setBanned(groupJid, userJid, bool)
Change Group Name
Kik.setGroupName(groupJid, name)
Private Requests
Set Profile Name
Kik.setProfileName(firstName, lastName)
License
GNU AGPLv3