Building a Simple Bot for Discord

Building 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!

Sayan Chakraborty

Share with your community!

Related Posts

Field engineer using a tablet surrounded by alerts showing connectivity, visibility, sync, and productivity issues, illustrating why office software fails in field operations.

Why Office Software Fails in the Field

AT A GLANCE Software built for desks tends to fail in the field. Construction, logistics, utilities, and multi-site service work happen where connectivity is unreliable,

The Hidden Cost of Shadow IT blog banner featuring cybersecurity risks, unauthorized applications, cloud security, and hidden IT expenses.

The Hidden Cost of Shadow IT

AT A GLANCE Shadow IT – software developed or purchased by teams not under official IT control – is common: in Retool’s 2026 survey, 60%

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