コード例 #1
0
ファイル: proxy.py プロジェクト: FrederickGeek8/TwistedBot
 def __init__(self, host, port):
     self.mgsside = "CLIENT"
     self.log = logbot.getlogger(self.mgsside)
     self.host = host
     self.port = port
     self.log.msg("Generating RSA key pair")
     self.rsakey = encryption.gen_rsa_key()
コード例 #2
0
 def __init__(self, host, port):
     self.mgsside = "CLIENT"
     self.log = logbot.getlogger(self.mgsside)
     self.host = host
     self.port = port
     self.log.msg("Generating RSA key pair")
     self.rsakey = encryption.gen_rsa_key()
コード例 #3
0
ファイル: default.py プロジェクト: FrederickGeek8/TwistedBot
import operator
import types
from collections import defaultdict

import twistedbot.logbot as logbot
from twistedbot.packets import packets
from twistedbot.packets import Container, Metadata

from pynbt import NBTFile


log = logbot.getlogger("-")

#########################################################################################################
# ignore_packets = [0, 4, 11, 12, 13, 24, 28, 29, 30, 31, 32, 33, 34, 35, 62] #these bring a lot of noise
# 0 keep alive
# 4 time update
# 11 player position
# 12 player look
# 13 player position&look
# 24 spawn mob
# 28 entity velocity
# 29 desctoy entity
# 30 entity
# 31 entity relative move
# 32 entity look
# 33 entity look and relative move
# 34 entity teleport
# 35 entity head look
# 62 named sound effect
コード例 #4
0
# -*- coding: utf-8 -*-
# section description for 'help' command.
"""..just an example plugin"""

from twistedbot.behaviours import BehaviourBase
from twistedbot import logbot

log = logbot.getlogger("Example Plugin")


def example(speaker, verb, data,  interface):
    """Just logs a message when you say 'example' in chat."""
    world, factory = interface.world, interface.factory
    full_data = verb + ' ' + data
    log.msg('Example works! Received "%s" from %s ' % (full_data, speaker))


class PluginBehaviour(BehaviourBase):
    pass

verbs = {"example": example}
コード例 #5
0
ファイル: proxy.py プロジェクト: FrederickGeek8/TwistedBot
 def __init__(self, proxyclient):
     self.mgsside = "SERVER"
     self.log = logbot.getlogger(self.mgsside)
     self.proxyclient = proxyclient
コード例 #6
0
ファイル: proxy.py プロジェクト: FrederickGeek8/TwistedBot
import syspath_fix
syspath_fix.update_sys_path()

import argparse

from twisted.internet import reactor
from twisted.internet.protocol import Protocol, Factory
from twisted.internet.endpoints import TCP4ServerEndpoint, TCP4ClientEndpoint

from twistedbot.packets import make_packet, parse_packets, packets
from twistedbot import encryption
from twistedbot import logbot


log = logbot.getlogger("PROXY")


class ProxyProtocol(Protocol):

    def dataReceived(self, bytestream):
        try:
            self.parser(bytestream)
        except:
            logbot.exit_on_error()

    def sendData(self, bytestream):
        if self.encryption_on:
            bytestream = self.cipher.encrypt(bytestream)
        self.transport.write(bytestream)
コード例 #7
0
# -*- coding: utf-8 -*-
"""commands relating to inventory and manipulating objects"""


from twistedbot.behaviours import BehaviourBase
from twistedbot import logbot


log = logbot.getlogger("INVENTORY PLUGIN")

inventory_names = {
    'armor': 'interface.inventory.armor',
    'chest': '"<not yet implemented>"',
    'general': 'interface.inventory.general',
    'full': 'interface.inventory',
    'ready': 'interface.inventory.ready',
    }


def hold(speaker, verb, data, interface):
    """hold <item name> - Switch to that item (must be in ready inventory)"""
    item_name = data.strip()
    # Look for it in our ready inventory
    try:
        interface.hold(item_name, general_inventory=True)
    except Exception, e:
        if not str(e):
            raise
        interface.world.chat.send_message(str(e))

コード例 #8
0
import twistedbot.logbot as logbot
from twistedbot.plugins.base import load, PluginChatBase

name = __name__.split('.')[-1]
log = logbot.getlogger("%s PLUGINS" % name.upper())
plugs = load(log, __file__, name)
コード例 #9
0
import signal
import argparse

import syspath_fix
syspath_fix.update_sys_path()

from twisted.internet import reactor
from twisted.protocols import basic
from twisted.internet.defer import inlineCallbacks

import twistedbot.factory as factory
import twistedbot.config as config
import twistedbot.logbot as logbot
from twistedbot.world import World

log = logbot.getlogger("MAIN")


class ConsoleChat(basic.LineReceiver):
    from os import linesep as delimiter

    def __init__(self, world):
        self.world = world

    def connectionMade(self):
        log.msg("terminal chat available")

    def lineReceived(self, line):
        try:
            self.world.chat.process_command_line(line)
        except Exception as e:
コード例 #10
0
# -*- coding: utf-8 -*-
"""basic, inbuilt actions"""
from twistedbot import behaviours
from twistedbot.logbot import getlogger

log = getlogger('SYSTEM PLUGINS')


def rotate_and_circulate(user, verb, data, interface):
    """"rotate <group>" or "circulate <group>": follow signs in a group, in-order."""
    if data:
        interface.world.bot.behaviour_tree.new_command(
                    behaviours.WalkSignsBehaviour, group=data, type=verb)
    else:
        interface.world.chat.send_message("which sign group to %s?" % verb)


def go(user, verb, data, interface):
    """"go <player>" or "go <sign>": go to a player or sign"""
    world, chat = interface.world, interface.world.chat
    if data:
        split_data = data.split()
        if len(split_data) == 2 and split_data[0] == 'to':
            if split_data[1] in world.entities.players:
                msg = ("I don't know how to go to other players yet.")
                chat.send_message(msg)
        else:
            world.bot.behaviour_tree.new_command(behaviours.GoToSignBehaviour,
                                                 sign_name=data)
    else:
        interface.world.chat.send_message("go where?")
コード例 #11
0
ファイル: gui.py プロジェクト: jpmarno/TwistedBot
import sys
import signal
import multiprocessing
from time import sleep
from collections import deque

from PyQt4 import QtGui
from PyQt4 import QtCore

import bot
from twistedbot import logbot
from twistedbot.utils import Message

# from resources.splitimages import make_tiles
log = logbot.getlogger("GUI")

# example edit


class MainWindow(QtGui.QMainWindow):
    def __init__(self, argv):
        QtGui.QMainWindow.__init__(self)

        self.to_bot = multiprocessing.Queue()
        self.to_gui = multiprocessing.Queue()

        # Start the bot
        bot_args = (argv, self.to_bot, self.to_gui)
        self.bot = multiprocessing.Process(target=bot.start, args=bot_args)
        self.bot.start()
コード例 #12
0
# -*- coding: utf-8 -*-
"""programming tools - commander only"""

from twistedbot.behaviours import BehaviourBase
from twistedbot import logbot
from twistedbot import config

log = logbot.getlogger("DEBUG PLUGIN")


def commander_only(method):
    def authorized_method(speaker, verb, data, interface):
        if speaker.lower() != config.COMMANDER.lower():
            msg = "This command is commander-only (not for you)"
            interface.world.chat.send_message(msg)
            return
        return method(speaker, verb, data, interface)

    return authorized_method


@commander_only
def eid(speaker, verb, data, interface):
    """eid <number> - Display the entity referenced by the given entity id"""
    wfc = interface.world, interface.world.factory, interface.world.chat
    world, factory, chat = wfc
    try:
        eid = int(data.strip())
    except ValueError:
        chat.send_message("Expected a number, but got '%s' instead." % data)
        return
コード例 #13
0
 def __init__(self, proxyclient):
     self.mgsside = "SERVER"
     self.log = logbot.getlogger(self.mgsside)
     self.proxyclient = proxyclient
コード例 #14
0
import syspath_fix

syspath_fix.update_sys_path()

import argparse

from twisted.internet import reactor
from twisted.internet.protocol import Protocol, Factory

from twistedbot.packets import make_packet, parse_packets, packets
from twistedbot import encryption
from twistedbot import logbot
from twistedbot import config

log = logbot.getlogger("PROXY")


class ProxyProtocol(Protocol):
    def dataReceived(self, bytestream):
        try:
            self.parser(bytestream)
        except:
            logbot.exit_on_error()

    def sendData(self, bytestream):
        if self.encryption_on:
            bytestream = self.cipher.encrypt(bytestream)
        self.transport.write(bytestream)

    def parse_encrypted_stream(self, bytestream):
        plaintext = self.decipher.decrypt(bytestream)
コード例 #15
0
import operator
import types
from collections import defaultdict

import twistedbot.logbot as logbot
from twistedbot.packets import packets
from twistedbot.packets import Container, Metadata

from pynbt import NBTFile

log = logbot.getlogger("-")

#########################################################################################################
# ignore_packets = [0, 4, 11, 12, 13, 24, 28, 29, 30, 31, 32, 33, 34, 35, 62] #these bring a lot of noise
# 0 keep alive
# 4 time update
# 11 player position
# 12 player look
# 13 player position&look
# 24 spawn mob
# 28 entity velocity
# 29 desctoy entity
# 30 entity
# 31 entity relative move
# 32 entity look
# 33 entity look and relative move
# 34 entity teleport
# 35 entity head look
# 62 named sound effect
#########################################################################################################
コード例 #16
0
ファイル: bot.py プロジェクト: srynot4sale/TwistedBot
import argparse

import syspath_fix

syspath_fix.update_sys_path()

from twisted.internet import reactor
from twisted.protocols import basic

from twistedbot.factory import MineCraftFactory
from twistedbot.world import World
import twistedbot.config as config
import twistedbot.logbot as logbot


log = logbot.getlogger("MAIN")


class ConsoleChat(basic.LineReceiver):
    def __init__(self, world):
        self.world = world

    def lineReceived(self, line):
        try:
            self.world.chat.process_command(line)
        except Exception as e:
            logbot.exit_on_error(e)


def start():
    parser = argparse.ArgumentParser(description="Bot arguments.")
コード例 #17
0
# -*- coding: utf-8 -*-
# section description for 'help' command.
"""the help system"""
from twistedbot import logbot

log = logbot.getlogger("HELP PLUGIN")

def help(speaker, verb, data,  interface):
    """"help" or "help <section>" or "help <command>" or "help <section/command>" """
    data = data.strip()
    if not data:
        help_msg = ["""Sections are:"""]
        for section in interface.behaviours:
            mod = interface.behaviours[section]
            help_msg.append(section + " - " + mod.__doc__ if mod.__doc__
                            else section)
        help_msg.append('Use "help <section>" for more info.')
        help_msg = '\n'.join(help_msg)
    elif '/' in data:
        section, command = [d.strip() for d in data.split('/'), 1]
        if section not in interface.behaviours:
            msg = "Unknown section for help: '%s'" % section
            interface.world.chat.send_message(msg)
            log.msg(msg)
            return
        verbs = interface.behaviours[section].verbs
        if command not in verbs:
            msg = "Unknown command for section %s: %s" % (section, command)
            interface.world.chat.send_message(msg)
            log.msg(msg)
            return
コード例 #18
0
ファイル: __init__.py プロジェクト: Scythic/TwistedBot
import twistedbot.logbot as logbot
from twistedbot.plugins.base import load, PluginChatBase


name = __name__.split('.')[-1]
log = logbot.getlogger("%s PLUGINS" % name.upper())
plugs = load(log, __file__, name)