You'd need a database to set user as 'subscribed' or 'unsubscribed' for that.
I'll give you an example with store package
You'll need the following packages:
- store
- node-telegram-bot-api
store package is local storage, may reset when the app restarts
The code given below may give you an idea, it just enables you to create the functionality of Subscribe and Unsubscribe, you may use loop methods to send news to users in 'array'
const TelegramBot = require('node-telegram-bot-api');
// replace the value below with the Telegram token you receive from @BotFather
const token = 'YOUR_TELEGRAM_BOT_TOKEN';
var store = require('store')
var subscribed_users = store.get('subscribed')
// Create a bot that uses 'polling' to fetch new updates
const bot = new TelegramBot(token, {polling: true});
// Matches "/echo [whatever]"
bot.onText('/start', (msg) => {
// 'msg' is the received Message from Telegram
const chatId = msg.chat.id;
bot.sendMessage(chatId, 'Welcome!\nUser /subscribe to subscribe to newsletter or /unsubscribe to unsubscribe to news letter');
});
bot.onText('/subscribe', (msg) => {
if(!susbcribed_users){
var subscribed_users = []
}
const chatId = msg.chat.id;
//retrive subscribed users array data
if(subscribed_users.includes(msg.chat.id)){
bot.sendMessage(chatId, "You're already subscribed to newsletter!")
return
}
var new_data = subscribed_users.push(msg.chat.id)
store.set('subscribed', new_data)
bot.sendMessage(chatId, "You're subscribed to newsletter!")
})
bot.inText('/unsubscribe', (msg) => {
const chatId = msg.chat.id;
if(!subscribed_users.includes(msg.chat.id)){
bot.sendMessage(chatId, "You're not subscribed to newsletter!")
return
}
const newArr = arr.filter(object => {
return object !== msg.chat.id;
});
store.set('subscribed', newArr)
bot.sendMessage(chatId, "You're subscribed to newsletter!")
})