Additional IRC commands and bot tasks for EarwigBot https://en.wikipedia.org/wiki/User:EarwigBot
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

urbandictionary.py 1.4 KiB

пре 11 година
пре 11 година
пре 11 година
пре 11 година
пре 11 година
пре 11 година
пре 11 година
12345678910111213141516171819202122232425262728293031323334353637383940
  1. # -*- coding: utf-8 -*-
  2. #
  3. # Public domain, 2013 Legoktm
  4. #
  5. from json import loads
  6. import re
  7. from urllib import quote
  8. from urllib2 import urlopen
  9. from earwigbot.commands import Command
  10. class UrbanDictionary(Command):
  11. """Get the definition of a word using Urban Dictionary."""
  12. name = "urban"
  13. commands = ["urban", "urbandictionary", "dictt", "definee", "defne", "dct",
  14. "ud"]
  15. def process(self, data):
  16. if not data.args:
  17. self.reply(data, "What do you want to define?")
  18. return
  19. url = "http://api.urbandictionary.com/v0/define?term={0}"
  20. q = quote(' '.join(data.args), safe="")
  21. query = urlopen(url.format(q)).read()
  22. res = loads(query)
  23. if res['result_type'] == 'exact':
  24. definition = re.sub(r"\s+", " ", res['list'][0]['definition'])
  25. example = re.sub(r"\s+", " ", res['list'][0]['example'])
  26. if definition and definition[-1] not in (".", "!", "?"):
  27. definition += "."
  28. msg = '{0} \x02Example\x0F: {1}'.format(definition, example)
  29. self.reply(data, msg)
  30. elif res['result_type'] == 'fulltext':
  31. L = [i['word'] for i in res['list']]
  32. msg = 'Here are some close matches: {0}.'.format(', '.join(L))
  33. self.reply(data, msg)
  34. else:
  35. self.reply(data, 'Sorry, no results found.')