Bot functions

Function

Description

Bot.sendMessage(text)

Bot.sendMessage("Hello from bot")

Bot.runCommand(command, options)

Run other command

Bot.runCommand("/contact")

and with options:

Bot.runCommand("/contact", {phone: "+15424", email: "example@example.com"})

in second command /contact:

Bot.sendMessage("Phone is:" + options.phone);

Bot.run(options)

Run other command

Bot.run({ command: "/contact" })

Bot.clearRunAfter(options)

Clear other command with run_after by label

Bot.runAll(options)

Run other command for all chats

Bot.runAll({ command: "/broadcast" })

Bot.sendKeyboard(buttons, message)

send keyboard and message. Message is required

Bot.sendKeyboard("about, help,\ncontacts", "send keyboard now")

Bot.sendInlineKeyboard(buttons, message)

Send inline keyboard and message. Message is required. Buttons is array. Button must have text fields: title(required), url or command.

Bot.sendInlineKeyboard([ {title: "google", url: "http://google.com" }, {title: "other command", command: "/othercommand"} ], "Please make a choice.")

Bot.editInlineKeyboard(buttons)

Edit exist inline keyboard after executing the command that was called by its button

Bot.editInlineKeyboard([ {title: "google", url: "http://google.com" } ])

Bot.setProp(name, value)

Bot.setProp("TotalScore", 100)

Also you can pass type: Bot.setProp(name, value, type)

Type can be: integer, float, string, text, json, datetime

Bot.getProp(name)

Bot.getProp("TotalScore")

can get property with default value for non exist property:

Bot.getProp("TotalScore", 100)

can get property of another bot: Bot.getProp({ name: "propName", other_bot_id: OTHER_BOT_ID })

Bot.deleteProp(name)

Delete property by it name

Bot.importCSV()

Bot.blockChat(chat_id)

Block chat:

Bot.blockChat(chat.id)

Bot.unblockChat(chat_id)

Unblock chat:

Bot.unblockChat(chat.id)

Bot.inspect(value)

Send inspected value to chat. Good for debug

Access to property in answer:

You can also use the properties in the command's answer. For example, you can do this with the / hello command:Total score: <TotalScore>!

Bot.run(params)

Run other command

Bot.run(params)

Field

Description

command

Required. Command for run. For example "/start". Can pass params

options

json for passing to command. Available through options in this command

run_after

delay in seconds before command callingName is case sensitive. can be float. Exact execution time is not guaranteed. Command will be executed in background.

background

Boolean: (true or false). By default: false. If true - command will be executed in background.

bot_id

bot_id for passing. By default this is current bot.id. This bot must be in the same BB Account

user_id

user_id for passing. By default this is current user.id

user_telegramid

user_telegramid for passing

chat_id

chat_id for passing. By default this is current chat.id

label

can be used for clearing with Bot.clearRunAfter

ignoreMissingCommand

Example 1. Run another command /balance with delay 1 hour for current user

Bot.run( {
    command: "/balance",
    run_after: 1*60*60,  // 1 hour delay
    // label: "runBalance"  // label can be used for remove future calling
} )

Example 2. Run another command /balance with delay 5 days for this user

Bot.run( {
    command: "/balance",
    run_after: 60*60*24*5,  // 5 days delay
    // options: { amount: 5, currency: "BTC" }  // you can pass data
    // chat_id: chat.id  // or use another chat_id
    user_id: user.id,  // or use another user.id
    // user_telegramid: tgId // or another user's telegram id
    // bot_id: ANOTHER_BOT_ID // to run command for your another bot 
} )

Bot.clearRunAfter(options)

Can clear future command(s) execution setted by Bot.run

Use this function if future command calling not needed already

// delete all future commands executions
Bot.clearRunAfter()
// delete all future commands executions with label "myLabel"
Bot.clearRunAfter({ label: "myLabel"})

Field

Description

label

Required. Command for clearing. For example "myLabel"

Example 1. Run another command /work with delay 5 days. And remove that delay (for example on 3th day)

Bot.run({
    command: "/balance",
    run_after: 60*60*24*5,  // 5 days delay
    label: "myLabel"
})

On the third day we learned that the call is no longer needed:

// remove all future executions with label "mylabel"
Bot.clearRunAfter({
    label: "myLabel"
})

Bot.runAll(options)

Run other command for all chats

Bot.runAll(params)

Field

Description

command

Required. Command for run. For example "/start". Can pass params

options

json for passing to command. Available through options in this command

on_create

run this command on task creation with task information

for_chats

Command will be runned for this chats type only. Can be:

"private-chats"

"group-chats"

"super-group-chats"

"all" - default

Example:

Command: /news

Bot.runAll( {
    // this command will be executed
    // for each private chat (user)
    command: "/broadcast",
    for_chats: "private-chats",
    on_create: "on_new_brodcast_task",
    // you can pass data via options
    options: { news: "Hello! it is news!" }
} )

Command: /broadcast

// it have user and chat object!
// so we can send any information now: message, keyboard, photo and etc

Bot.sendMessage(options.news)

// we can get brodcast info via task
/*
let task = options.task;
Bot.sendMessage(
   "Task progress: " + task.progress +
   "\n total: " + task.total +
   "\n cur index: " + task.cur_position +
   "\n status: " + task.status +
   "\n errors: " + task.errors_count
)
*/

Command: on_new_brodcast_task

const task = options.run_all_task;
Bot.sendMessage(
  "Task for brodcasting created. Task id: " + task.id
);

// save task id:
Bot.setProperty("curBrodcastTaskID", task.id, "integer")

// Bot.inspect(options.run_all_task);

Command: /progress

// show current runAll progress

const taskID = Bot.getProperty("curBrodcastTaskID");
let task = new RunAllTask({ id: taskID });
// Bot.inspect(task) // you can check all fields

if(!task.status){
  Bot.sendMessage("This task not found")
  return
}

Bot.sendMessage(
  "Current brodcast: " + 
  "\n Status: " + task.status + " " + task.progress + "%" +
  "\n Progress:" + task.cur_position + "/" + task.total
)

Last updated

Was this helpful?