Giter Site home page Giter Site logo

terrabot's Introduction

Terrabot

Introduction

PyPI version

Terrabot is a Terraria bot API written in Python. It is designed to be easy to use and uses the event-listener pattern.

Installation

Install the module using pip:

pip3 install terrabot

Current features

  • Joining servers
  • Chatting
  • Triggering various events, like joining, tiledata and itemdrops
  • Parsing server data to keep classes up-to-date
  • Moving the bot by teleporting

Examples

The following is a very basic bot, which will connect and handle chat.


from terrabot import TerraBot
from terrabot.events import Events

# Create a TerraBot object
bot = TerraBot('127.0.0.1')
event = bot.get_event_manager()


# Connect a function to an event using a decorator
@event.on_event(Events.Chat)
def chat(event_id, msg):
    # Do something with the message
    # In this case, stop the bot if the word "Stop" occurs
    print(msg)
    if "stop" in msg:
        bot.stop()


# Start the bot
bot.start()

# And wait
while bot.client.running:
    pass

More examples can be found under the 'examples' directory. Also check the wiki for more information about the inner workings of the bot and how to interface with it.

Contributing

If you want to contribute, that's great! I would really appreciate the help. Just send a pull request and i'll quickly check and accept it. These are some areas that need work:

  • NPC packet parsing
  • Item dropping
  • Teleporting other players (>:D)
  • Synchronizing packets like health and update-player-packets
  • Placing tiles (!)

For information about the packets, see this link.

terrabot's People

Contributors

brentenbrood avatar chieltbest avatar flammified avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

terrabot's Issues

Blank character name

Issue

I passed correct protocol number to method, and whatever I do it returns this error on server side (client doesn't log at all since server kicks the client.)

I am using tShock for the server.
Server's terraria version is 1.4.0.5
tShock version is 4.4.0.0

Details

Server-side log looks like this:

192.168.0.8:63469 is connecting...
Debug: Bouncer / OnGetSection rejected empty player name.
192.168.0.8:63469 was booted: Kicked: Your client sent a blank character name.
Kicked for : 'Your client sent a blank character name.'
Saving world...

Here's my entire code:

from terrabot.events import Events
from terrabot import TerraBot

# Create a TerraBot object
bot = TerraBot('192.168.0.8', name="thisisalongname2", protocol=230)
event = bot.get_event_manager()

# Connect a function to an event using a decorator


@event.on_event(Events.Chat)
def chat(event_id, msg):
    # Do something with the message
    # In this case, stop the bot if the word "Stop" occurs
    print(msg)
    bot.message("ddd?")
    if "!e498r7afdc6" in msg:
        bot.stop()


# Start the bot
bot.start()

# And wait
while bot.client.running:
    pass

ModuleNotFoundError: No module named 'PIL'

How to fix?

Traceback (most recent call last):
  File "C:\Users\Admin\Documents\Python\bot.py", line 1, in <module>
    from terrabot import TerraBot
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\terrabot\__init__.py", line 1, in <module>
    from .bot import TerraBot
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\terrabot\bot.py", line 6, in <module>
    from terrabot.util.worlddrawer import draw_world
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\terrabot\util\worlddrawer.py", line 1, in <module>
    from PIL import Image, ImageDraw
ModuleNotFoundError: No module named 'PIL'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.