AZBot-Telegram
Alynx Zhou's zero-dependency Telegram Bot API implemention.
Usage
$ npm i -s azbot-telegram
NOTE: Since v3.0.0 this package is renamed from aztgbot
to azbot-telegram
.
Example
Echo Bot with BotMaster and BotServant
import {
BotMaster,
BotServant,
BotAPI,
BotLogger,
botUtils
} from 'azbot-telegram'
class EchoBot extends BotServant {
constructor(botAPI, identifier, botID, botName) {
super(botAPI, identifier, botID, botName)
}
async processUpdate(update) {
if (update['message'] != null &&
update['message']['text'] != null) {
await this.botAPI.sendChatAction(
update['message']['chat']['id'],
'typing'
)
await this.botAPI.sendMessage(
update['message']['chat']['id'],
update['message']['text'],
{'replyToMessageID': update['message']['message_id']}
)
}
}
}
new BotMaster(
new BotAPI(process.argv[2]),
EchoBot,
botUtils.perFromID,
{'botLogger': new BotLogger(true)}
).loop()
Media Bot with BotPoller Directly
import {
BotPoller,
BotAPI,
botUtils
} from 'azbot-telegram'
class MediaBot {
constructor(token) {
this.botAPI = new BotAPI(token)
this.botPoller = new BotPoller(this.botAPI, this.onUpdates.bind(this))
}
loop() {
process.on('SIGINT', () => {
this.botPoller.stopPollUpdates()
process.exit(0)
})
this.botPoller.startPollUpdates()
}
async onUpdates(updates) {
for (const update of updates) {
if (update['message'] != null &&
update['message']['text'] != null) {
await this.botAPI.sendChatAction(
update['message']['chat']['id'],
'typing'
)
await this.botAPI.sendMediaGroup(update['message']['chat']['id'], [
new botUtils.InputMediaPhoto(new botUtils.InputFile('1.png')),
new botUtils.InputMediaPhoto(new botUtils.InputFile('2.png')),
new botUtils.InputMediaPhoto(new botUtils.InputFile('3.png'))
], {'replyToMessageID': update['message']['message_id']})
}
}
}
}
new MediaBot(process.argv[2]).loop()
License
Apache-2.0
Other
Docs: Here
Repo: GitHub