Additional IRC commands and bot tasks for EarwigBot https://en.wikipedia.org/wiki/User:EarwigBot
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

11 роки тому
11 роки тому
11 роки тому
11 роки тому
11 роки тому
11 роки тому
11 роки тому
11 роки тому
11 роки тому
1234567891011121314151617181920212223242526272829303132333435363738394041
  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 or phrase 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.encode("utf8"),
  29. example.encode("utf8"))
  30. self.reply(data, msg)
  31. elif res['result_type'] == 'fulltext':
  32. L = [i['word'] for i in res['list']]
  33. msg = 'Here are some close matches: {0}.'
  34. self.reply(data, msg.format(u", ".join(L).encode("utf8")))
  35. else:
  36. self.reply(data, 'Sorry, no results found.')