示例#1
0
def main():
    args = _arg_parser_factory().parse_args()

    msg: str = args.msg
    use_udp: bool = args.udp
    host: str = args.host
    port: int = args.port

    coder = Base85Coder()
    logger = ConsoleLogger()

    # create socket
    if use_udp:
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        sender = UDPSender(sock, (host, port), coder)
        reader = UDPReader(sock, coder)
    else:
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.connect((host, port))
        sender = TCPSender(sock, coder)
        reader = TCPReader(sock, coder)

    sender.send(b'')
    sender.send(b'msg:' + msg.encode())

    for line in reader.read():
        logger.log(line.decode())
        reader.close()
示例#2
0
class WooferBot(irc.IRCClient):
    def __init__(self):
        self.logger = ConsoleLogger()
        self.nickname = config['nickname']
        self.password = config['password']
        self.lineRate = 0.67

    def connectionMade(self):
        irc.IRCClient.connectionMade(self)
        self.logger.log("[connected at %s]" %
                        time.asctime(time.localtime(time.time())))

    def connectionLost(self, reason):
        irc.IRCClient.connectionLost(self, reason)
        self.logger.log("[disconnected at %s]" %
                        time.asctime(time.localtime(time.time())))

    # callbacks for events
    def signedOn(self):
        """Called when bot has successfully signed on to server."""
        for c in self.factory.channels:
            self.join(c)

    def joined(self, channel):
        """This will get called when the bot joins the channel."""
        self.logger.log("[I have joined %s]" % channel)

    def privmsg(self, user, channel, msg):
        """This will get called when the bot receives a message."""
        user = user.split('!', 1)[0]
        self.logger.log("<%s> %s" % (user, msg))
        WooferHandler.handleMessage(self, user, channel.replace('#', ''), msg)

        # simple commands can be handled here locally, but ones that
        # require external lookups should be scheduled on the dispatcher

    def action(self, user, channel, msg):
        """This will get called when the bot sees someone do an action."""
        user = user.split('!', 1)[0]
        self.logger.log("* %s %s" % (user, msg))

    # irc callbacks
    def alterCollidedNick(self, nickname):
        """
        Generate an altered version of a nickname that caused a collision in an
        effort to create an unused related name for subsequent registration.
        """
        return self.nickname + '^'
示例#3
0
文件: irc.py 项目: CryZe/WooferedBot
class WooferBot(irc.IRCClient):

    def __init__(self):
        self.logger = ConsoleLogger()
        self.nickname = config['nickname']
        self.password = config['password']
        self.lineRate = 0.67

    def connectionMade(self):
        irc.IRCClient.connectionMade(self)
        self.logger.log("[connected at %s]" % time.asctime(time.localtime(time.time())))

    def connectionLost(self, reason):
        irc.IRCClient.connectionLost(self, reason)
        self.logger.log("[disconnected at %s]" % time.asctime(time.localtime(time.time())))

    # callbacks for events
    def signedOn(self):
        """Called when bot has successfully signed on to server."""
        for c in self.factory.channels:
            self.join(c)

    def joined(self, channel):
        """This will get called when the bot joins the channel."""
        self.logger.log("[I have joined %s]" % channel)

    def privmsg(self, user, channel, msg):
        """This will get called when the bot receives a message."""
        user = user.split('!', 1)[0]
        self.logger.log("<%s> %s" % (user, msg))
        WooferHandler.handleMessage(self, user, channel.replace('#', ''), msg)

        # simple commands can be handled here locally, but ones that
        # require external lookups should be scheduled on the dispatcher

    def action(self, user, channel, msg):
        """This will get called when the bot sees someone do an action."""
        user = user.split('!', 1)[0]
        self.logger.log("* %s %s" % (user, msg))

    # irc callbacks
    def alterCollidedNick(self, nickname):
        """
        Generate an altered version of a nickname that caused a collision in an
        effort to create an unused related name for subsequent registration.
        """
        return self.nickname + '^'