Discord Bot with AI / Voice Recognition
view all blogs...

Justin Bess :: June 1, 2018

Creating a discord bot with AI and speech recognition

Here recently, I had a long time acquaintance invite me over to a Discord server. The server is intended for professional growth, team capture the flag events, and your typical information security related items. I decided that I could spark things up by creating a bot. My initial plan was to have a bot to poll for CVE updates, and relay anything new to the server.

While I did stick with the original plan, I also ended up integrating a few other things into the bot, which I had not initially desired to add. I added voice recognition, artificial intelligence, and audio streaming capabilities; I even have it where the bot can talk! Before I dive too deep, I’ll point out the bot is hosted on my Github repository as concord. If you would like to view any of the code, or download and run your own Discord bot based on mine, simply follow the instructions outlined in the README file.

The reason I chose to develop the bot in Discord.js, is because it has complete support for the entire Discord API, it’s maintained, it’s reliable, and there is no point in inventing the wheel all over again. So the overall goal of this bot was to broadcast new CVE’s, as they were introduced into several platforms, including the national vulnerability database. I found a site, which hosts a nice API, for such things over at circl (computer incident response center Luxembourg). I’m always pro-oop, so with object oriented programming in mind, I built a CVE class, with the necessary functions to establish my desired needs.

Fetching data with the API

The heart of this class will rely on the circl API, so it’s apparent that we are going to need to interact with the API somehow. To do this, I constructed a method which interacts with the service using the Node.js http service.

const config = require('../config')
const FILES = config.cve.FILES

module.exports = class CVE {
  constructor(client){
    this.https = require('https')
    this.apiBaseURL = 'https://cve.circl.lu/api/'
    this.client = client
    this.pending = []
  }

  apiFetch (part, cb) {
    this.https.get(this.apiBaseURL + part, (resp) => {
      let data = '';

      resp.on('data', (buff) => {
        data += buff
      })

      resp.on('end', () => {
        if(cb) cb(this.getJSON(data))
      })

    })
    .on('error', (err) => {
      console.log('An error was encountered while polling:', err.message)
    })
  }

  getJSON (json) {
    try {
      let o = JSON.parse(json);
      if (o && typeof o === "object") return o;
    }
    catch (e) {
      console.log('Error parsing JSON: ', e)
    }
    return false;
  }

}

The part parameter inside the apiFetch() function, will be appended to the API’s base URL. In this case, it’s set in the constructor appropriately as this.apiBaseURL = 'https://cve.circl.lu/api/'. The http constructor property makes use of the Node.js http module. We also allow for the user to pass in a potential callback function to the method, using cb as the parameter name. On lines 20-22, you will notice where we check for the callback, and call it accordingly, if it’s present.

resp.on('end', () => {
  if(cb) cb(this.getJSON(data))
})

The pending property on line 9, set as this.pending = [] will take an array of CVE requests, which will later be used to determine if the API is currently fetching some result, so users can not duplicate queries accidentally, or repeat the query because they feel like it’s not being responsive. The use of getJSON() is self explanatory. It takes some data passed in, and converts it into a JSON string. This is the typical way an API would respond with it’s data, but we can’t be too careful. You wouldn’t want to try parsing something as a JSON object, when the server didn’t even respond with such an object.

Request API calls indefinitely

We want our bot to update us when a new CVE is published. This means that the bot will have to continuously request the latest CVE’s published. We’ll then have to compare the new CVE list, to the last list we acquired. If we notice a different CVE in our list, then we can safely assume that a new CVE has been added. Let’s take a look at how we can implement this functionality.

poll (func, time) {
  setInterval(func.bind(this), 10*1000* /*n minutes*/ time)
}

log (content, file) {
  let fs = require('fs')
  fs.writeFile(file, content, function (err) {
    if (err) return console.log(err)
  })
}

fromFile (file, cb) {
  let fs = require('fs')
  fs.readFile(file, 'utf8', function (err, data) {
    if (err) return console.log(err)
    if (cb) return cb(data)
    return data
  })
}

compare (current, previous) {
  return current === previous
}

latest () {
  let _log = this.log
  let _fromFile = this.fromFile
  let _messageChannel = this.messageChannel.bind(this)

  function success (data) {
    let fs = require('fs')
    if (fs.existsSync(FILES['latest'])) {
      _fromFile(FILES['latest'], (prevData) => {
        prevData = JSON.parse(prevData)
        let newest = data[0]
        let previous = prevData[0]
  
        if ( newest.id !== previous.id ) {
          _messageChannel(`NEW CVE FOUND:: ${newest.id}: ${newest.summary}`)
          _messageChannel(`https://cve.circl.lu/cve/${newest.id}`)
          _log(JSON.stringify(data), FILES['latest'])
        } else {
          console.log('No CVE updates to report')
        }
      })
    } else {
      _messageChannel('Building CVE data!')
      console.log('Creating ' + FILES['latest'])
      _log(JSON.stringify(data), FILES['latest'])
    }
  }

  this.apiFetch('last', (data) => { success(data) } )
}

This purpose of the poll function is to take some desired function, and run it every x minutes. We use the built in setInterval() function in JavaScript for this. We created the compare() function, which will be used to compare the new API result to the previous result. The results of each API call is grabbed with the latest() function, and is then logged into a log file set in the config settings, and is written to via the log() function. We created a function to read the old request logs, and named it accordingly as fromFile(). With all of this together, we have the functionality needed to request for published CVE’s every x minutes, and compare it to a list of old results, and distinguish new CVE’s from the most recent list!

Creating the command class

I have checked out several IRC bots in the past, outside of Discord.js, and I’m all too familiar with seeing functions hard-coded directly in the core area of the bot, after it’s established a connection and authenticated with a server. I think this approach leads to bloated code that’s not very maintainable. I built an IRC bot written in Ruby in the past, and used the approach just mentioned. I took some time to think about what I was doing, and came up with something that I believe to be a viable solution to the problem.

class Loader {
  constructor() {
    this.methods = []
  }

  add (method) {
    this.methods.push(method)
  }

  execute (name, props) {
    this.methods.map(meth => {
      if (name === meth.name) {
        meth.cb(props)
      }
    })
  }

  isMethod (name) {
    let results = this.methods.filter((meth) => {
      return meth.name === name
    })
    return results.length < 1 ? false : true
  }
}
const methodManager = new Loader()
module.exports = methodManager

This is a very simple class, but it solves a great problem with our maintainability and bloating issue described earlier. The class will use an Array to store all defined commands to be used by the bot. Each command will simply be an Object, with properties that structure how the bot should use the command. The command object will then be pushed into the Loader array using the add() method. We can check if a command exists within the loader by using isMethod() function. This function will be useful in the main loop when checking if the user supplies a command. The execute() command finds the correct command from the list of commands, and executes the function defined as cb inside the command object, and passes any additional parameters as the props parameter.
The command object can have properties to include things like auth, locked, cb, name Where auth could set an authentication level such as moderators only or admin, the locked property is something that could be set by an admin or moderator to disable a command, name could be what to call to execute the function, and cb is the function that will be called. Let's look at how the core of the bot makes use of the loader class.

const methodManager = require('./loader')

client.on('message', msg => {
  let parts = msg.content.split(' ')
  let cmd = parts[0]
  let options = parts.slice(1, parts.length).join(' ')

  if (methodManager.isMethod(cmd)) {
    let props = {client, msg, parts, options, cve}
    methodManager.execute(cmd, props)
  }

})

As you can see, we require the loader class in the first line as methodManager Whenever we receive a message, we break up the text into an array separated by spaces, and use the first word as our command. We set options as everything after the command. Then we use the isMethod() method from our loader class to check if the command is in the command list, and if it is, we run the execute command with the built up options. Now this is all fancy, but we haven't loaded our methods or shown how to create a command, so let's talk about that next.

Creating a command

All commands will be created inside the /functions directory, and separated into individual files. I recommend using a filename that's similar to your command name, so it's easier to recognize when you need to edit files. Let's create a command named say

const methodManager = require('../loader')

function say (props) {
  // get what the user said through the props.parts property
  let content = props.parts.slice(1, props.parts.length).join(' ')

  // send our reply to the message, pulled from the msg property
  props.msg.reply(content)
}
let sayMethod = {
  name: '!say',
  locked: false,
  help: '!say ',
  cb: repeat
}
methodManager.add(sayMethod)

As you can see, we loaded in the loader class as methodManager. We know our props that are being passed in from the core of the application, so we can use this to reply to the correct channel, and with the correct data. We have not locked the method by default, and we added a helper for the method.

Loading our commands to the loader class

I decided to separate my commands into a directory called functions, and load them in with a simple loop using fs.

function loadFunctions () {
  let fs = require('fs')
  let methods = fs.readdirSync('./functions/');
  for (let i in methods) {
    let file = methods[i].split('.')[0]
    require('./functions/' + file)
  }
}

// Initialize functions
loadFunctions()

Comments

      October 10, 2018


      ElimiSnore Reviews

      As soon as I discovered this website I went on reddit
      to share some of the love with them. http://cecilebrunette931.pen.io/

      October 10, 2018


      Keto Complete Diet

      Hello, i read your blog occasionally and i own a similar one and i was just
      curious if you get a lot of spam responses? If so how do
      you stop it, any plugin or anything you can suggest?
      I get so much lately it’s driving me insane so any
      help is very much appreciated. http://chronoskeep.com/diss//index.php/Fastest_Strategy_Lose_20_Pounds

      October 26, 2018


      Google

      Just beneath, are quite a few absolutely not related websites to ours, on the other hand, they may be surely really worth going over.

      October 29, 2018


      Google

      Below youll come across the link to some web pages that we assume you need to visit.

      November 9, 2018


      news

      check beneath, are some completely unrelated web sites to ours, on the other hand, they’re most trustworthy sources that we use

      November 10, 2018


      jimmy choo

      that could be the finish of this post. Right here youll obtain some sites that we feel you will enjoy, just click the hyperlinks over

      November 10, 2018


      dolce and gabbana

      very few internet websites that come about to be in depth below, from our point of view are undoubtedly effectively really worth checking out

      November 10, 2018


      60161

      The data mentioned inside the post are several of the very best out there

      we prefer to honor several other net web sites on the net, even if they arent linked to us, by linking to them. Underneath are some webpages really worth checking out

      November 12, 2018


      voyance gratuite amour

      that could be the end of this article. Here you will come across some websites that we assume you will appreciate, just click the links over

      November 12, 2018


      top rated vibrators

      we prefer to honor lots of other online web-sites around the web, even when they arent linked to us, by linking to them. Beneath are some webpages worth checking out

      November 12, 2018


      daily news

      usually posts some extremely interesting stuff like this. If you are new to this site

      November 12, 2018


      adam and eve challenge

      we prefer to honor quite a few other world-wide-web web-sites on the internet, even if they arent linked to us, by linking to them. Underneath are some webpages really worth checking out

      November 14, 2018


      Garo Kassabian

      that may be the finish of this post. Right here you will uncover some internet sites that we think youll enjoy, just click the links over

      November 15, 2018


      Google

      Here are some hyperlinks to web pages that we link to since we consider they are worth visiting.

      November 15, 2018


      freelance jobs

      just beneath, are quite a few completely not associated sites to ours, nevertheless, they’re surely worth going over

      November 17, 2018


      gucci

      usually posts some incredibly exciting stuff like this. If youre new to this site

      November 17, 2018


      burberry

      here are some hyperlinks to web pages that we link to for the reason that we believe they’re worth visiting

      November 17, 2018


      versace

      very few web sites that happen to become detailed below, from our point of view are undoubtedly very well really worth checking out

      November 17, 2018


      Tuin

      Wonderful story, reckoned we could combine a few unrelated data, nevertheless really really worth taking a search, whoa did one master about Mid East has got additional problerms too

      November 20, 2018


      namntavkor

      here are some hyperlinks to websites that we link to simply because we think they’re worth visiting

      November 22, 2018


      Google

      Please take a look at the web-sites we adhere to, like this one particular, because it represents our picks from the web.

      November 23, 2018


      Google

      Here is a great Blog You may Find Interesting that we encourage you to visit.

      November 23, 2018


      zvodret iluret

      I have been absent for a while, but now I remember why I used to love this web site. Thank you, I will try and check back more often. How frequently you update your site?

      http://www.zvodretiluret.com/

      November 24, 2018


      smazka u parnej

      very few internet sites that occur to become detailed beneath, from our point of view are undoubtedly nicely really worth checking out

      November 24, 2018


      teen porn

      always a huge fan of linking to bloggers that I really like but do not get a good deal of link enjoy from

      November 24, 2018


      big tits

      that would be the finish of this report. Here you will locate some internet sites that we consider youll value, just click the links over

      November 24, 2018


      Google

      Usually posts some pretty exciting stuff like this. If you are new to this site.

      November 24, 2018


      sex toys for big woman

      please go to the sites we follow, like this one, as it represents our picks from the web

      November 25, 2018


      New Music

      check beneath, are some completely unrelated websites to ours, nonetheless, they’re most trustworthy sources that we use

      November 25, 2018


      Google

      Here are a few of the websites we suggest for our visitors.

      November 25, 2018


      flexible butt plugs

      just beneath, are many totally not connected web-sites to ours, even so, they may be surely really worth going over

      November 25, 2018


      bbw sex toys

      check below, are some entirely unrelated websites to ours, on the other hand, they may be most trustworthy sources that we use

      November 25, 2018


      dildo with balls

      we prefer to honor numerous other internet web pages on the net, even if they arent linked to us, by linking to them. Under are some webpages worth checking out

      November 26, 2018


      realistic dildo

      Wonderful story, reckoned we could combine a number of unrelated data, nevertheless seriously really worth taking a search, whoa did a single discover about Mid East has got extra problerms also

      November 26, 2018


      MILF Porn

      The information mentioned in the write-up are several of the most beneficial obtainable

      November 26, 2018


      Google

      Here is a superb Weblog You might Find Exciting that we encourage you to visit.

      November 27, 2018


      Parallel Profits

      please go to the websites we stick to, which includes this one particular, as it represents our picks from the web

      November 27, 2018


      forexsignals

      Here are some of the web pages we advise for our visitors

      November 27, 2018


      affordable website design

      Wonderful story, reckoned we could combine a handful of unrelated information, nevertheless genuinely really worth taking a appear, whoa did one understand about Mid East has got a lot more problerms too

      November 27, 2018


      on page seo

      we came across a cool web site which you may love. Take a look should you want

      November 27, 2018


      sextoys

      that would be the finish of this post. Here you will discover some sites that we feel you will value, just click the hyperlinks over

      November 27, 2018


      Acqua Di Parma luchtje

      check below, are some completely unrelated web-sites to ours, even so, they are most trustworthy sources that we use

      November 28, 2018


      Google

      That may be the finish of this article. Right here youll discover some web pages that we think youll enjoy, just click the hyperlinks.

      November 28, 2018


      Karel Koekoek

      Every when inside a when we opt for blogs that we study. Listed below would be the most current web sites that we select

      November 29, 2018


      singapore photographer

      Here is a great Weblog You may Obtain Intriguing that we Encourage You

      November 29, 2018


      google seo

      that may be the finish of this write-up. Here you will discover some internet sites that we believe you will value, just click the hyperlinks over

      November 29, 2018


      Google

      Every as soon as inside a even though we decide on blogs that we study. Listed beneath would be the newest websites that we decide on.

      November 30, 2018


      monster dong

      we came across a cool web page that you just could possibly love. Take a search in the event you want

      November 30, 2018


      bullet sex toys

      the time to read or stop by the subject material or websites we have linked to beneath the

      November 30, 2018


      waterproof rabbit vibrator

      that could be the finish of this write-up. Here you will come across some web-sites that we believe you will enjoy, just click the hyperlinks over

      November 30, 2018


      CliffStaps

      Joe Bonamassa is a famous country singer, so don’t miss the possibility to visit Joe Bonamassa tour Canada

      December 1, 2018


      clit vibrating massagers

      always a big fan of linking to bloggers that I appreciate but do not get a whole lot of link love from

      check below, are some totally unrelated sites to ours, nonetheless, they may be most trustworthy sources that we use

      December 1, 2018


      FX SIGNALS

      we prefer to honor many other internet web pages around the internet, even when they arent linked to us, by linking to them. Below are some webpages really worth checking out

      December 1, 2018


      Ghana classified ads

      Here are a few of the web-sites we advocate for our visitors

      always a huge fan of linking to bloggers that I appreciate but dont get a lot of link really like from

      December 2, 2018


      Google

      One of our visitors recently recommended the following website.

      check beneath, are some entirely unrelated web sites to ours, nonetheless, they are most trustworthy sources that we use

      December 4, 2018


      senior unix administrator

      check below, are some completely unrelated internet websites to ours, on the other hand, they’re most trustworthy sources that we use

      December 4, 2018


      medical helpline

      check beneath, are some entirely unrelated internet sites to ours, nevertheless, they are most trustworthy sources that we use

      December 5, 2018


      bullet massager

      we prefer to honor numerous other web web sites around the web, even when they arent linked to us, by linking to them. Below are some webpages worth checking out

      December 5, 2018


      adam and eve

      The facts talked about inside the report are several of the best obtainable

      December 5, 2018


      vibrator

      here are some links to internet sites that we link to for the reason that we feel they are really worth visiting

      please stop by the websites we follow, which includes this one particular, because it represents our picks from the web

      December 7, 2018


      silicone vibrator

      Wonderful story, reckoned we could combine a handful of unrelated data, nonetheless actually really worth taking a search, whoa did a single learn about Mid East has got additional problerms as well

      December 7, 2018


      SannyMok

      Make a more new posts please 🙂
      ___
      Sanny

      December 7, 2018


      anal sex starter kit

      below you will uncover the link to some web pages that we consider you ought to visit

      December 8, 2018


      sex toys for her

      the time to study or go to the subject material or internet sites we’ve linked to below the

      December 8, 2018


      female strap on

      here are some links to web pages that we link to due to the fact we consider they may be worth visiting

      December 8, 2018


      realistic dildo

      one of our visitors lately encouraged the following website

      December 9, 2018


      destiny carries

      destiny carries

      […]although internet sites we backlink to below are considerably not connected to ours, we feel they are basically worth a go by way of, so possess a look[…]

      December 10, 2018


      סיפורי סקס

      one of our guests lately recommended the following website

      December 10, 2018


      Business Networking

      Business Networking

      […]just beneath, are a lot of entirely not connected internet sites to ours, nonetheless, they’re certainly worth going over[…]

      December 10, 2018


      redbubble t-shirts

      redbubble t-shirts

      […]Wonderful story, reckoned we could combine several unrelated information, nevertheless seriously really worth taking a look, whoa did one particular master about Mid East has got far more problerms as well […]

      December 10, 2018


      s128

      the time to study or take a look at the content material or internet sites we’ve linked to below the

      December 10, 2018


      go now

      go now

      […]always a huge fan of linking to bloggers that I like but don’t get a lot of link really like from[…]

      December 10, 2018


      grafica

      grafica

      […]although web-sites we backlink to below are considerably not associated to ours, we feel they’re really worth a go via, so possess a look[…]

      December 11, 2018


      sexleketøy

      sexleketøy

      […]we came across a cool web page which you may delight in. Take a search should you want[…]

      December 11, 2018


      SannyMok

      Nice posts! 🙂
      ___
      Sanny

      December 12, 2018


      Adult dating in india

      please take a look at the web-sites we comply with, such as this one particular, as it represents our picks through the web

      December 12, 2018


      Sigaretta Elettronica

      Sigaretta Elettronica

      […]The information and facts talked about in the report are several of the ideal accessible […]

      December 12, 2018


      bmw vin decoder

      we like to honor a lot of other internet web sites on the internet, even when they arent linked to us, by linking to them. Under are some webpages really worth checking out

      December 12, 2018


      play free zeus new jersey

      play free zeus new jersey

      […]that will be the end of this article. Right here you will come across some sites that we think you will enjoy, just click the links over[…]

      Pay someone to take my online class

      […]please check out the web pages we stick to, like this one particular, because it represents our picks in the web[…]

      December 12, 2018


      pegging

      we prefer to honor quite a few other net internet sites on the internet, even when they arent linked to us, by linking to them. Under are some webpages really worth checking out

      December 13, 2018


      vibrating panties

      here are some hyperlinks to sites that we link to because we consider they are worth visiting

      December 13, 2018


      bust it nut butter

      below you will come across the link to some sites that we consider you should visit

      December 13, 2018


      bedroom swings for adults

      please go to the internet sites we stick to, including this one, as it represents our picks in the web

      December 13, 2018


      business

      business

      […]Every when in a even though we choose blogs that we read. Listed beneath would be the most current web sites that we pick […]

      December 13, 2018


      inmobiliaria en malaga

      we like to honor quite a few other world-wide-web web sites around the net, even though they arent linked to us, by linking to them. Underneath are some webpages worth checking out

      December 13, 2018


      Showgup

      Looking for the best app to watch free movies on your Android phone? Then your should check Showbox APK. This is the most famous app today that has a big library of shows and films. This app is also available for iMac users. But your need to download it first to enjoy free shows Showbox app on PC

      December 13, 2018


      insurance saving

      insurance saving

      […]Every as soon as in a although we choose blogs that we study. Listed beneath would be the newest sites that we pick out […]

      December 13, 2018


      918kiss

      one of our guests lately suggested the following website

      best movers in west Virginia

      […]Here is an excellent Blog You may Discover Fascinating that we Encourage You[…]

      December 14, 2018


      kasabian fire

      The data talked about within the post are a few of the ideal available

      December 14, 2018


      Google

      That is the finish of this article. Here youll locate some web-sites that we feel youll enjoy, just click the links.

      December 15, 2018


      Google

      Here is an excellent Blog You might Find Fascinating that we encourage you to visit.

      December 16, 2018


      central london harley street addiction counsellor

      I value the blog article.Really looking forward to read more.

      https://www.london-practice.com/

      December 16, 2018


      Google

      That is the finish of this article. Here youll discover some sites that we consider youll enjoy, just click the links.

      December 16, 2018


      wake up

      wake up

      […]the time to read or go to the subject material or sites we have linked to beneath the[…]

      December 17, 2018


      sarkari naukri

      we prefer to honor a lot of other internet web sites around the internet, even though they arent linked to us, by linking to them. Beneath are some webpages worth checking out

      December 17, 2018


      latest sports news

      Here is a great Blog You may Obtain Exciting that we Encourage You

      December 17, 2018


      BennyBYDAY

      [url=http://tadalafil20mg.top/]tadalafil[/url] [url=http://vardenafil.us.com/]cheap vardenafil[/url] [url=http://lisinoprilgenericonline.com/]prinivil lisinopril[/url] [url=http://propranolol.us.com/]propranolol[/url]

      December 18, 2018


      Google

      The time to read or take a look at the content or web pages we have linked to beneath.

      December 18, 2018


      luxury iphone x case

      luxury iphone x case

      […]one of our visitors a short while ago suggested the following website[…]

      December 18, 2018


      Google

      Although websites we backlink to beneath are considerably not related to ours, we really feel they are in fact really worth a go via, so have a look.

      December 18, 2018


      entrepreneur on fire

      entrepreneur on fire

      […]Every the moment inside a while we pick out blogs that we study. Listed beneath would be the latest sites that we choose […]

      December 19, 2018


      Google

      We prefer to honor a lot of other world wide web web-sites on the net, even if they arent linked to us, by linking to them. Below are some webpages worth checking out.

      December 19, 2018


      msn hotmail login

      msn hotmail login

      […]Here are a few of the websites we suggest for our visitors[…]

      December 19, 2018


      men's t shirts

      men’s t shirts

      […]The data talked about within the write-up are a number of the most beneficial out there […]

      December 19, 2018


      Home & Improvement

      just beneath, are various absolutely not associated internet sites to ours, even so, they are surely really worth going over

      December 19, 2018


      jordan 12

      Thanks so much for providing individuals with such a splendid opportunity to discover important secrets from here. It really is very good and as well , stuffed with a lot of fun for me personally and my office peers to search your blog the equivalent of three times in one week to read the new tips you will have. Of course, I’m also always motivated concerning the powerful principles served by you. Some 3 points in this posting are absolutely the finest I have had.
      jordan 12

      December 20, 2018


      Sexy live sex

      very couple of web sites that occur to become in depth beneath, from our point of view are undoubtedly well worth checking out

      December 20, 2018


      casti de copiat

      casti de copiat

      […]Sites of interest we’ve a link to[…]

      December 20, 2018


      air max

      I just wanted to develop a quick note so as to appreciate you for these wonderful items you are giving on this website. My extensive internet search has now been compensated with sensible ideas to go over with my company. I ‘d point out that most of us website visitors actually are extremely blessed to live in a decent network with many marvellous professionals with valuable tips. I feel very privileged to have encountered your entire website and look forward to tons of more exciting times reading here. Thanks a lot again for a lot of things.
      air max

      December 21, 2018


      chase auto loan

      car loans

      December 21, 2018


      Google

      That would be the end of this post. Here you will uncover some sites that we feel youll value, just click the links.

      December 21, 2018


      Sexy live chat

      please go to the web-sites we follow, which includes this 1, as it represents our picks from the web

      December 21, 2018


      free sex videos

      usually posts some extremely fascinating stuff like this. If you are new to this site

      December 22, 2018


      yeezy shoes

      I definitely wanted to make a simple comment to appreciate you for all of the pleasant recommendations you are showing at this website. My time consuming internet lookup has at the end been honored with extremely good strategies to go over with my good friends. I ‘d admit that most of us website visitors actually are extremely lucky to live in a superb site with many special individuals with insightful advice. I feel truly fortunate to have come across your entire site and look forward to tons of more cool minutes reading here. Thanks a lot again for a lot of things.
      yeezy shoes

      December 22, 2018


      หวยมาเลย์

      หวยมาเลย์

      […]here are some links to sites that we link to because we consider they’re really worth visiting[…]

      instagram followers and likes app

      […]very couple of sites that occur to be detailed beneath, from our point of view are undoubtedly properly really worth checking out[…]

      December 22, 2018


      Cool shirts

      we came across a cool site which you may possibly appreciate. Take a look for those who want

      December 22, 2018


      Google

      Every after in a when we select blogs that we read. Listed beneath are the most recent web-sites that we pick.

      December 22, 2018


      Gossip

      Here is a good Weblog You might Discover Interesting that we Encourage You

      December 22, 2018


      www.yulilondon.com/

      Enjoyed every bit of your blog post.Much thanks again. Really Cool.

      https://www.yulilondon.com/

      December 22, 2018


      Tyga taste

      just beneath, are several entirely not connected internet sites to ours, even so, they’re certainly really worth going over

      December 23, 2018


      918kiss

      very couple of websites that take place to be in depth beneath, from our point of view are undoubtedly nicely really worth checking out

      December 23, 2018


      jordan shoes

      I’m writing to make you know what a perfect discovery my cousin’s child developed browsing your blog. She discovered many details, including how it is like to have an incredible helping nature to let folks effortlessly learn several complex things. You truly exceeded our expectations. Many thanks for delivering these helpful, safe, educational and even cool tips about the topic to Gloria.
      jordan shoes

      December 23, 2018


      Google

      Very few internet sites that come about to be in depth below, from our point of view are undoubtedly properly worth checking out.

      December 24, 2018


      sexy Latina dance

      Here is a great Blog You may Come across Interesting that we Encourage You

      December 24, 2018


      Hot Latina dance

      please visit the websites we follow, including this a single, as it represents our picks from the web

      December 24, 2018


      limit of sine

      very handful of internet websites that come about to be in depth below, from our point of view are undoubtedly very well worth checking out

      December 25, 2018


      Pandora Shop

      here are some links to web-sites that we link to since we assume they may be worth visiting

      December 25, 2018


      sexy cam performers

      although web-sites we backlink to beneath are considerably not connected to ours, we feel they are truly really worth a go via, so possess a look

      December 25, 2018


      Google

      Sites of interest we’ve a link to.

      December 25, 2018


      Sexy female show

      although sites we backlink to beneath are considerably not connected to ours, we feel they’re truly worth a go via, so have a look

      December 25, 2018


      Youtube Converter

      Here are some of the internet sites we advise for our visitors

      December 25, 2018


      Hot live

      check below, are some totally unrelated websites to ours, however, they are most trustworthy sources that we use

      December 26, 2018


      Free sexy cams

      Here is a good Weblog You may Find Fascinating that we Encourage You

      December 26, 2018


      Free adult sex

      one of our guests lately proposed the following website

      December 26, 2018


      Daily Top 10 Lists

      Daily Top 10 Lists

      […]here are some hyperlinks to sites that we link to mainly because we think they may be really worth visiting[…]

      December 26, 2018


      Jupiter FL Pest Control

      Jupiter FL Pest Control

      […]the time to study or take a look at the content material or web-sites we have linked to beneath the[…]

      December 26, 2018


      Google

      Very few web sites that transpire to be comprehensive below, from our point of view are undoubtedly very well worth checking out.

      December 27, 2018


      Funny Instagram

      Wonderful story, reckoned we could combine a handful of unrelated data, nevertheless seriously worth taking a appear, whoa did one particular understand about Mid East has got a lot more problerms too

      real ways to make money from home

      […]usually posts some pretty exciting stuff like this. If you are new to this site[…]

      December 27, 2018


      Free adult

      that is the end of this report. Here youll locate some internet sites that we feel you will appreciate, just click the hyperlinks over

      December 27, 2018


      Turorial

      Turorial

      […]we prefer to honor a lot of other net web pages on the internet, even if they aren’t linked to us, by linking to them. Underneath are some webpages really worth checking out[…]

      December 27, 2018


      Yeah yeah

      Here are several of the web sites we advise for our visitors

      December 27, 2018


      link 1gom

      link 1gom

      […]we came across a cool web site which you might take pleasure in. Take a appear if you want[…]

      Wonderful story, reckoned we could combine a few unrelated information, nonetheless truly really worth taking a look, whoa did a single understand about Mid East has got far more problerms too

      December 28, 2018


      Rap videos

      Here are some of the sites we recommend for our visitors

      December 29, 2018


      beeg xxx

      although internet sites we backlink to below are considerably not related to ours, we feel they are basically worth a go through, so possess a look

      December 29, 2018


      hot girls live

      always a big fan of linking to bloggers that I appreciate but do not get a great deal of link like from

      December 29, 2018


      Sex stream

      Sites of interest we’ve a link to

      December 29, 2018


      Too sexy

      one of our guests not too long ago proposed the following website

      mega millions numbers 10/23/18

      […]here are some hyperlinks to sites that we link to due to the fact we believe they are really worth visiting[…]

      December 29, 2018


      sexy cams live

      just beneath, are a lot of absolutely not related web-sites to ours, even so, they are surely really worth going over

      December 30, 2018


      Threatpost.com

      Threatpost.com

      […]we came across a cool internet site that you could appreciate. Take a appear if you want[…]

      December 30, 2018


      Google

      Usually posts some very fascinating stuff like this. If you are new to this site.

      December 30, 2018


      Google

      Always a huge fan of linking to bloggers that I adore but dont get a whole lot of link really like from.

      December 31, 2018


      Business loans

      we came across a cool web-site that you simply may possibly love. Take a look when you want

      December 31, 2018


      Music videos

      the time to read or visit the content material or sites we have linked to beneath the

      December 31, 2018


      funny hip hop

      below you will come across the link to some websites that we assume it is best to visit

      January 1, 2019


      Hip hop funny

      Wonderful story, reckoned we could combine some unrelated data, nonetheless definitely worth taking a search, whoa did one particular find out about Mid East has got far more problerms also

      January 1, 2019


      Funny videos

      check beneath, are some completely unrelated web-sites to ours, nevertheless, they’re most trustworthy sources that we use

      January 1, 2019


      Funny song

      we prefer to honor a lot of other world wide web web pages around the net, even though they arent linked to us, by linking to them. Below are some webpages really worth checking out

      please check out the sites we comply with, which includes this a single, as it represents our picks from the web

      January 2, 2019


      Hot rap song

      please check out the web sites we adhere to, like this one particular, as it represents our picks from the web

      January 2, 2019


      Hip hop videos

      Here is a superb Weblog You might Obtain Fascinating that we Encourage You

      January 2, 2019


      Comedy Hip hop

      Here are a number of the websites we advocate for our visitors

      January 3, 2019


      MaxPowerStaps

      Download your missing dll from Download ntdll.dll page. Fix your error now!

      January 3, 2019


      Rude69.com

      Your article seems to suggest that introverts struggle with leadership roles “put in a position to lead or instruct can send us into a panic” – I actually find that quite offensive. Introverts are not necessarily bad presenters, leaders or instructors, likewise, being an extrovert does not make you good at those things.

      https://www.rude69.com

      Online vs offline marketing what is the difference

      […]that may be the end of this write-up. Here you’ll discover some internet sites that we think you’ll appreciate, just click the links over[…]

      January 3, 2019


      space_miamii chat

      Wonderful story, reckoned we could combine a number of unrelated data, nonetheless genuinely worth taking a search, whoa did 1 understand about Mid East has got extra problerms as well

      January 4, 2019


      hot mixtape

      although websites we backlink to below are considerably not associated to ours, we feel they’re in fact worth a go by, so have a look

      January 4, 2019


      juicy chat

      The information mentioned within the post are several of the ideal readily available

      January 4, 2019


      Asd hot webcam chat

      we prefer to honor lots of other net web sites around the net, even though they arent linked to us, by linking to them. Underneath are some webpages worth checking out

      January 4, 2019


      crystals for sale

      usually posts some extremely fascinating stuff like this. If you are new to this site

      January 4, 2019


      Google

      The time to read or stop by the content or web pages we have linked to below.

      January 4, 2019


      Hot rap mixtape

      we prefer to honor lots of other world wide web websites on the internet, even if they arent linked to us, by linking to them. Below are some webpages worth checking out

      January 5, 2019


      home loan center

      mortgage

      January 5, 2019


      Kiabox

      atarax

      January 5, 2019


      Kimbox

      atarax

      January 6, 2019


      va loans texas

      mortgage

      January 6, 2019


      fha loan online

      mortgage

      January 6, 2019


      Kimbox

      cipro

      January 6, 2019


      houston mortgage

      va loans

      January 6, 2019


      fun chat

      that could be the end of this report. Right here you will locate some web sites that we consider youll enjoy, just click the hyperlinks over

      January 6, 2019


      Janebox

      atarax

      January 6, 2019


      Kiabox

      cipro

      January 6, 2019


      mortgage 1

      va loan

      January 7, 2019


      fun chat

      we came across a cool internet site that you might get pleasure from. Take a look if you want

      January 7, 2019


      Evabox

      cipro

      January 7, 2019


      Hot chat

      just beneath, are numerous absolutely not connected web pages to ours, having said that, they’re surely worth going over

      January 7, 2019


      va loans rates

      mortgage

      January 7, 2019


      Janebox

      atarax

      January 7, 2019


      mortgage arvest

      mortgage

      January 7, 2019


      Sexy girls

      Sites of interest we have a link to

      January 8, 2019


      Fun sex chat

      very handful of web-sites that occur to be comprehensive beneath, from our point of view are undoubtedly very well really worth checking out

      January 8, 2019


      omaha mortgage

      mortgage

      January 8, 2019


      Google

      The facts mentioned inside the article are some of the most beneficial readily available.

      January 8, 2019


      fha loan online

      mortgage

      January 8, 2019


      texas mortgage

      mortgage

      January 9, 2019


      first time home

      mortgage

      January 9, 2019


      Google

      The time to read or visit the subject material or internet sites we have linked to below.

      January 9, 2019


      custom apparel

      custom apparel

      […]The information and facts talked about in the article are some of the most beneficial accessible […]

      January 9, 2019


      visit their website

      below youll discover the link to some web pages that we believe it is best to visit

      January 9, 2019


      Google

      That could be the finish of this article. Right here you will uncover some internet sites that we think youll enjoy, just click the links.

      January 9, 2019


      mortgage uk

      va loan

      January 9, 2019


      dyson v8

      Thanks for the blog post.Really looking forward to read more.

      http://dysonv8.us/

      January 10, 2019


      ambalaba traduction

      very handful of sites that happen to become in depth beneath, from our point of view are undoubtedly well worth checking out

      January 10, 2019


      GambleJoe Casino

      GambleJoe Casino

      […]below you will discover the link to some web-sites that we consider it is best to visit[…]

      January 11, 2019


      8 inch dong

      below youll come across the link to some internet sites that we believe you need to visit

      January 11, 2019


      lesbian milf and teen

      Here is a good Weblog You may Locate Interesting that we Encourage You

      January 11, 2019


      Google

      Wonderful story, reckoned we could combine a few unrelated information, nevertheless genuinely worth taking a appear, whoa did one particular discover about Mid East has got a lot more problerms at the same time.

      January 11, 2019


      cbd near me

      cbd near me

      […]The facts talked about within the article are several of the top readily available […]

      January 11, 2019


      xlxx

      always a large fan of linking to bloggers that I enjoy but do not get lots of link love from

      January 11, 2019


      Google

      The information mentioned inside the write-up are several of the most effective offered.

      January 11, 2019


      EJkat

      Sir Elton John is my favourite singer of the world. I’m happy to present for you this setlist. Check eltonjohntour2019.com website to get your ticket for the final Elton John tour in 2019.

      January 12, 2019


      Sexycams

      just beneath, are numerous entirely not associated web-sites to ours, even so, they may be surely worth going over

      January 12, 2019


      Adult

      Every after in a when we decide on blogs that we read. Listed below would be the most up-to-date websites that we select

      Wonderful story, reckoned we could combine a number of unrelated information, nonetheless definitely worth taking a look, whoa did 1 understand about Mid East has got additional problerms also

      January 14, 2019


      attacco di panico

      check beneath, are some entirely unrelated internet websites to ours, nevertheless, they are most trustworthy sources that we use

      January 14, 2019


      sexy gaming Chat

      although web-sites we backlink to beneath are considerably not associated to ours, we feel they’re basically really worth a go via, so possess a look

      January 14, 2019


      sexy Latina duo

      one of our visitors recently proposed the following website

      最も人気のあるスロット

      […]that would be the finish of this write-up. Right here you’ll find some web sites that we assume you will appreciate, just click the links over[…]

      January 14, 2019


      sweet Sofia cam

      below you will discover the link to some web-sites that we consider you ought to visit

      January 14, 2019


      sexy Melody webcam

      that would be the end of this post. Right here youll find some internet sites that we consider you will appreciate, just click the links over

      January 15, 2019


      panzerlied testo

      Wonderful story, reckoned we could combine some unrelated information, nonetheless truly really worth taking a search, whoa did one particular study about Mid East has got a lot more problerms also

      January 15, 2019


      Google

      Below youll come across the link to some web pages that we feel it is best to visit.

      January 16, 2019


      gucci handbags

      The information mentioned within the article are a few of the top available

      January 16, 2019


      Tory Burch

      The facts talked about within the write-up are a few of the very best readily available

      January 16, 2019


      Hot webcam

      very couple of internet websites that occur to be detailed below, from our point of view are undoubtedly nicely really worth checking out

      January 16, 2019


      Sexy chat

      Sites of interest we have a link to

      January 16, 2019


      funny hip hop

      that would be the finish of this post. Right here you will obtain some internet sites that we think you will appreciate, just click the hyperlinks over

      January 16, 2019


      Comedy rap

      we came across a cool site which you could possibly appreciate. Take a look for those who want

      that could be the end of this post. Here youll locate some web-sites that we feel youll value, just click the hyperlinks over

      January 17, 2019


      Google

      Here are some links to web pages that we link to simply because we believe they are really worth visiting.

      January 17, 2019


      Janebox

      zoloft

      January 17, 2019


      hot hunk sexy

      very few websites that occur to be detailed below, from our point of view are undoubtedly properly really worth checking out

      January 17, 2019


      Google

      The information and facts talked about within the report are a number of the best obtainable.

      January 18, 2019


      Janebox

      zoloft

      January 19, 2019


      Google

      One of our visitors just lately encouraged the following website.

      January 19, 2019


      investment

      I truly appreciate this post.Much thanks again. Really Cool.

      https://www.oooms.org/

      January 19, 2019


      silicone rabbit

      very couple of web-sites that come about to be comprehensive beneath, from our point of view are undoubtedly properly worth checking out

      January 20, 2019


      Google

      Please check out the sites we follow, including this 1, because it represents our picks through the web.

      January 20, 2019


      Kiabox

      zoloft

      January 20, 2019


      独立站推广

      独立站推广

      […]please pay a visit to the sites we comply with, like this one, as it represents our picks through the web[…]