Browse Source

Add Last.fm API calls

tags/Beta0.1
Tim Kuzhagaliyev 1 year ago
parent
commit
269901268d
5 changed files with 94 additions and 0 deletions
  1. 3
    0
      .gitignore
  2. 52
    0
      lib/BansheeBot.js
  3. 17
    0
      now-playing-bot.js
  4. 21
    0
      package-lock.json
  5. 1
    0
      package.json

+ 3
- 0
.gitignore View File

@@ -0,0 +1,3 @@
# JetBrains IDEs
/.idea
/node_modules

+ 52
- 0
lib/BansheeBot.js View File

@@ -0,0 +1,52 @@
/**
* @author Timur Kuzhagaliyev <tim.kuzh@gmail.com>
* @copyright 2017
* @license GPL-3.0
*/

const Discord = require("discord.js");
const LastFmNode = require('lastfm').LastFmNode;

class BansheeBot {

/**
* @param {{discordToken: string, lastFmApiKey: string, lastFmSecret: string, lastFmUserAgent: string, lastFmUsername: string}} config
*/
constructor(config) {
this.config = config;
this.client = new Discord.Client();
this.lastfm = new LastFmNode({
api_key: this.config.lastFmApiKey,
secret: this.config.lastFmSecret,
useragent: this.config.lastFmUserAgent,
});
}

start() {
return Promise.resolve()

.then(() => console.log('Connecting to Discord...'))
.then(() => this.client.login(this.config.discordToken))
.then(() => console.log('Connected!'))

.then(() => console.log('Searching for the music channel...'))
.then(() => this.client.channels.find(channel => channel.name && channel.name.match(/^music/i)))
.then(channel => {
if (!channel) throw new Error('Could not find the music channel!');
this.musicChannel = channel;
})

.then(() => console.log('Connecting to Last.fm stream...'))
.then(() => lastfm.stream(this.config.lastFmUsername))
.then(lastFmStream => {
lastFmStream.on('nowPlaying', (track) => {
this.musicChannel.send('Now playing: ' + track.name);
});
})

.catch(error => console.error(error));
}

}

module.exports = BansheeBot;

+ 17
- 0
now-playing-bot.js View File

@@ -0,0 +1,17 @@
/**
* @author Timur Kuzhagaliyev <tim.kuzh@gmail.com>
* @copyright 2017
* @license MIT
*/

const BansheeBot = require('./lib/BansheeBot');

let config = {
discordToken: process.env.BOT_TOKEN,
lastFmApiKey: process.env.LASTFM_API_KEY,
lastFmSecret: process.env.LASTFM_SECRET,
lastFmUserAgent: process.env.LASTFM_USER_AGENT,
lastFmUsername: process.env.LASTFM_USERNAME
};
let bot = new BansheeBot(config);
bot.start();

+ 21
- 0
package-lock.json View File

@@ -0,0 +1,21 @@
{
"name": "BansheeBot",
"version": "0.0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"lastfm": {
"version": "0.9.2",
"resolved": "https://registry.npmjs.org/lastfm/-/lastfm-0.9.2.tgz",
"integrity": "sha1-0Ayi47MOtITlEHkodVJZAOTXfYg=",
"requires": {
"underscore": "1.6.0"
}
},
"underscore": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz",
"integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag="
}
}
}

+ 1
- 0
package.json View File

@@ -8,6 +8,7 @@
},
"dependencies": {
"discord.js": "11.1.0",
"lastfm": "^0.9.2",
"request": "2.81.0"
}
}

Loading…
Cancel
Save