Building a Simple Bot for Discord

Before Starting to Code

Coding

				
					const moment = require('moment') 
const Agenda = require('agenda')
const agenda = new Agenda({
	db: {address: process.env.MONGO_CONNECTION_STRING},
	processEvery: '30 minutes'
});

const Discord = require('discord.io');
const bot = new Discord.Client({
	autorun: true,
	token: process.env.BOT_TOKEN
});

agenda.on('ready', function() {
	agenda.start();
});

function graceful() {
	agenda.stop(function() {
		process.exit(0);
	});
}

process.on('SIGTERM', graceful);

process.on('SIGINT' , graceful);
				
			
				
					let sendBirthdayMsg = function(user, channelID) {
	bot.sendMessage({
	to: channelID,
	message: `@${user} Happy Birthday to You!!!`
	});
}

agenda.define('send birthday wish', function(job, done) {
	let data = job.attrs.data; 
	sendBirthdayMsg(data.whoseBirthday, data.channelID)
	done()
});

let scheduleWish = function(whoseBirthday, whenBirthday, channelID) {
	agenda
		.create('send birthday wish', {whoseBirthday, channelID}) 
		.schedule(whenBirthday)
		.repeatEvery('1 year')
		.save()
}
				
			
				
					bot.on('message', function(user, userID, channelID, message, event) {

	if (!message.includes(`<@${bot.id}>`)) return

	let botSays = "
	let cleanedMsg = message.replace(`<@${bot.id}>`,").replace(/ +(?= )/g,").trim()
	let whoseBirthday = cleanedMsg.split(' ')[0]
	let whenBirthday = cleanedMsg.split(' ')[1]
	let whenBirthdayMoment = moment(whenBirthday, ['MM-DD','DD/MM']) 

	if ( !whenBirthdayMoment.isValid() ) {
		botSays = `@${user} Sorry Boss, I dint get what you just said!`
	} else {
		if ( whenBirthdayMoment.isBefore(moment(), 'days') ) {
			whenBirthdayMoment.add(1, 'year') 
		}
		scheduleWish(whoseBirthday, whenBirthdayMoment.toDate(), channelID)
		botSays = `@${user} OK Boss! I'll wish "${whoseBirthday}" every year on ${whenBirthdayMoment.format("Do MMMM")}!`
	}

	bot.sendMessage({
		to: userID,
		message: botSays
	})
});
				
			

WE DESIGN, DEVELOP AND MARKET BEAUTIFUL WEB & MOBILE APPS

Power Up Your Business with Our Services

Picture of Sayan Chakraborty

Sayan Chakraborty

Share with your community!

Related Posts

Mobile app development challenges

Challenges in Mobile App Development

The demand for mobile applications is surging – fueled by both business needs and user reliance on digital convenience. Yet, building a successful mobile app

tick

Thank You

Your message has been received and we will be contacting you shortly to follow-up. If you would like to speak to someone immediately feel free to call.

Follow Us