From Aah2Y, 9 Years ago, written in Python.
Embed
  1. #!/usr/bin/python
  2. from ConfigParser import RawConfigParser as ConfParser
  3. from BeautifulSoup import BeautifulSoup
  4. from optparse import OptionParser
  5. from collections import deque
  6. from time import sleep, time, gmtime, strftime
  7. import ConfigParser
  8. import os
  9. import sys
  10. import socket
  11. import codecs
  12. from irc import *
  13. from select import select
  14. import urllib
  15. import imp
  16. import modules.fml
  17. import modules.meme
  18. import modules.bitly
  19. import threading
  20.  
  21. server = "localhost"
  22. port = 1026
  23. nickpass = "lolwut"
  24. operlogin = "services lolwut"
  25. channels = "#chat"
  26.  
  27. internets = socket.socket (socket.AF_INET, socket.SOCK_STREAM)
  28. internets.connect((server, port))
  29.  
  30. def internets_bot(sock):
  31.     internets.send('NICK Internets\r\n')
  32.     internets.send('USER python Internets Internets :[Internets 1.0.2]\r\n')
  33.     while 1:
  34.         data = readline(sock)
  35.         raw = parse(data)
  36.         print("[Internets] %s" % raw)
  37.         if raw[0].lower() == "ping":
  38.            internets.send("PONG {reply}\r\n".format(reply = raw[1]))
  39.         if raw[0].lower().startswith("nickserv!"):
  40.             if raw[1] == "NOTICE" and "This nickname is registered" in raw[3]:
  41.                 internets.send('PRIVMSG NickServ :identify %s \r\n' % nickpass)
  42.                 internets.send('OPER %s \r\n' % operlogin)
  43.                 internets.send('JOIN %s \r\n' % channels)
  44.             if raw[0].startswith("NickServ!"):
  45.                 if raw[1] == "NOTICE" and "This nickname is registered" in raw[3]:
  46.                    internets.send('PRIVMSG NickServ :identify %s \r\n' % nickpass)
  47.             if raw[1] == "PRIVMSG":
  48.                 my.sender = raw[0]
  49.                 my.nick = raw[0].split("!")[0]
  50.                 my.auth = data.split('@')[0][1:]
  51.                 if len(raw) > 3:
  52.                     if raw[3] == ".uptime":
  53.                         end = time()
  54.                         uptime = end - start
  55.                         internets.send('PRIVMSG %s :Internets is running for %s \r\n' % (raw[2], duration_human(uptime)))
  56.                     if raw[3].startswith(".reload "):
  57.                         try:
  58.                             if config.get('staff', my.auth) == 'admin':
  59.                                 if raw[3].split(" ", 1)[1] == "fml":
  60.                                     imp.reload(modules.fml)
  61.                                     internets.send('PRIVMSG %s :Reloaded FML module.\r\n' % raw[2])
  62.                         except ConfigParser.NoOptionError:
  63.                             continue
  64.                     if raw[3] == ".info":
  65.                         q = modules.meme.get()
  66.                         internets.send('PRIVMSG %s :[Meme] %s\r\n' % (raw[2], q.meme))
  67.                         imp.reload(modules.meme)
  68.                     if raw[3] == ".fml":
  69.                         q = modules.fml.get()
  70.                         internets.send('PRIVMSG %s :[fml/#%s] %s\r\n' % (raw[2], q.number, q.text))
  71.                         internets.send('PRIVMSG %s :%s - %s\r\n' % (raw[2], q.agree, q.disagree))
  72.                     if raw[3] == ".meme":
  73.                         q = modules.meme.get()
  74.                         internets.send('PRIVMSG %s :[Meme] %s\r\n' % (raw[2], q.meme))
  75.                         imp.reload(modules.meme)
  76.                     if raw[3].startswith(".slogan"):
  77.                         try:
  78.                             slogan_topic = raw[3].split(" ", 1)[1]
  79.                             slogan_url = urllib.urlopen("http://parsers.faux-bot.com/slogan/%s" % slogan_topic)
  80.                             slogansoup = BeautifulSoup(slogan_url)
  81.                             x = str(slogansoup)
  82.                             x = x.split()
  83.                             slogan = " ".join(x[1:]).strip("End Response:")
  84.                             internets.send('PRIVMSG %s :[SloganMaker] "%s"\r\n' % (raw[2], slogan))
  85.                         except:
  86.                             internets.send('NOTICE %s :Syntax: .slogan <url>\r\n' % my.nick)    
  87.                     if raw[3].startswith(".shorten"):
  88.                         try:
  89.                             shorten = raw[3].split(" ", 1)[1]
  90.                             api = modules.bitly.Api(login='aha2y', apikey='R_68fd8f8405600aab706feecbc07ea066')
  91.                             short=api.shorten(shorten,{'history':1})
  92.                             internets.send('PRIVMSG %s :[Bitly] %s\r\n' % (raw[2], short))
  93.                         except:
  94.                             internets.send('NOTICE %s :Syntax: .shorten <url>\r\n' % my.nick)      
  95.  
  96.              
  97. internets_thread = threading.Thread(target = internets_bot, args = (internets, )) # Thread object
  98. internets_thread.start()
  99.  
  100. internets_thread.join()
  101.