from core import *
from plugin import *
import mythreading as threading
-from pseudoclient import sys_antiflood, sys_auth, sys_channels, sys_log, sys_options, cmd_manager, inviteable, argparser
+from pseudoclient import sys_antiflood, sys_log, sys_options, cmd_manager, inviteable, argparser
-import cmd_admin, cmd_user, internets_users
+import cmd_admin, cmd_private, cmd_user, internets_channels, internets_users, sys_auth
from api import bing, calc, google, imdb, ipinfo, lastfm, quotes, urbandictionary, urls, weather, wolfram, words, steam, twitch
from internets_utils import *
from api.steam import SteamUser
self.log.exception("Error reading 'internets:outputlimit' configuration option: %s" % err)
raise
+ try:
+ self.max_line_length = int(self.config.get('internets').get('maxlinelength'))
+ except Exception, err:
+ self.log.exception("Error reading 'internets:maxlinelength' configuration option: %s" % err)
+ raise
+
self.bind_admin_commands()
def start_threads(self):
self.options = sys_options.OptionManager(self)
self.elog = sys_log.LogManager(self)
+ self.commands_private = cmd_private.PrivateCommandManager()
self.commands_user = cmd_user.UserCommandManager()
except Exception, err:
self.log.exception('Error initializing core subsystems for internets module (%s)' % err)
self.elog.debug('Started core subsystems.')
try:
- self.channels = sys_channels.ChannelManager(self)
+ self.channels = internets_channels.InternetsChannelManager(self)
self.users = internets_users.InternetsUserManager(self)
- self.auth = sys_auth.AuthManager(self)
+ self.auth = sys_auth.InternetsAuthManager(self)
self.antiflood = sys_antiflood.AntiFloodManager(self)
except Exception, err:
self.log.exception('Error initializing subsystems for internets module (%s)' % err)
except Exception, err:
self.log.exception('Error initializing internets bing API (%s)' % err)
self.nsp = calc.NumericStringParser()
- self.google = google.Google(self.config.get('internets').get('key_google'))
- self.imdb = imdb.Imdb()
+ self.google = google.Google(self.config.get('internets').get('key_google'), self.config.get('internets').get('yt_parse_delay'))
+ self.imdb = imdb.Imdb(self.config.get('internets').get('key_imdb'))
self.ipinfo = ipinfo.IpInfo(self.config.get('internets').get('key_ipinfodb'))
self.lastfm = lastfm.LastFm(self.config.get('internets').get('key_lastfm'))
self.quotes = quotes.Quotes(self.config.get('internets').get('key_fml'))
def msg(self, target, message):
if message != '':
- Acidictive.privmsg(self.nick, target, format_ascii_irc(message))
+ if len(message) > 450: # from Protocol.privmsg -> long, do not spam chan
+ Acidictive.notice(self.nick, target, format_ascii_irc(message))
+ else:
+ Acidictive.privmsg(self.nick, target, format_ascii_irc(message))
def multimsg(self, target, count, intro, separator, pieces, outro = ''):
cur = 0
parser.destroy()
self.elog.debug('Parsed command @b%s@b: execution terminated.' % full_command)
+ def onPrivmsg(self, source, target, message):
+ if not super(internets, self).onPrivmsg(source, target, message):
+ # It's not a command
+ return
+
+ if not target in self.channels:
+ return
+
+ # both 'youtube.com' and 'youtu.be' get caught
+ if not 'youtu' in message or not self.channels[target].youtube_info:
+ return
+
+ sourceNick = User.findUser(source)['nick']
+ if not self.users.is_banned(sourceNick) and not self.antiflood.check_user(sourceNick, 'ytinfo', '') and target[0] == '#':
+ threading.deferToThread(cmd_user.onPrivmsg_regex_youtube, self, source, target, message)
+
def onChanModes(self, prefix, channel, modes):
if not self.initialized:
return