Giter Site home page Giter Site logo

reconbot's Introduction

Reconbot for Eve Online CircleCI

Reconbot is a notification relay bot for an MMO game Eve Online. It fetches character notifications from the EVE API, filters irrelevant ones out and sends relevant ones to set Slack or Discord channels. Notifications like SOV changes, SOV/POS/POCO/Citadel attacks.

Setup

Reconbot was intended to be used as a base for further customizations, or integration with other systems, but it can be run via run.py as well. Check it out for an example.

1. EVE Developer Application

This tool is ready to be used with Eve's ESI API. You will need to register your application on EVE Developers page.

When registering your EVE Application, please pick Authentication & API Access connection type, and make sure your application requests these permissions:

  • esi-universe.read_structures.v1 - necessary to fetch names of any linked structures;
  • esi-characters.read_notifications.v1 - necessary to fetch character level notifications.

Reconbot does not provide a way to authenticate an account to an application, so you will need to do so via some other means. First two sections of Fuzzysteve's guide on Using ESI with Google Sheets explain how to do that via Postman.

When registering the application take note of the Client ID and Secret Key, as they are necessary for Reconbot to establish communication with ESI API.

2. Slack or Discord chat tools

Slack

To add a Slack integration, check out this Slack documentation page on Bot Users (or create bot user for your workspace). Take note of the API token.

Discord

If you wish to use a Discord webhook:

Webhooks are the easiest way to integrate Reconbot with Discord. Simply follow this Discord guide to create a webhook for your channel. You should now have a URL like this:

https://discordapp.com/api/webhooks/496014874437332490/5783au24jzyEFIaWnfTvJn0gFzh5REEEE3ee3e3eNKeFee3We2cIe_6e7e36ugUj5zEm

Use it with DiscordWebhookNotifier as seen in run.py example.

If you wish to use a Discord bot user: (not recommended)

To add a Discord integration, check out this Discord documentation page on Bot accounts. You will need to create an application and add it to your discord server. See this guide for more visual step-by-step instructions. You will need a Token for your Bot User, and Channel ID where to post messages in. Use it with DiscordNotifier as seen in run.py example.

3. Reconbot setup

  1. Clone this repository
  2. Create a virtualenv environment: virtualenv -p python3 venv
  3. Activate the virtualenv environment: source venv/bin/activate. This will isolate reconbot's dependencies from the rest of your system's dependencies.
  4. Install Python depdendencies: pip install -r requirements.txt
  5. Modify run.py with your EVE API keys, key groups and Slack/Discord accounts/channels. whitelist should contain notification types you're interested in (or None to allow all supported types), and characters should contain entries for API keys of individual characters.
  6. Execute python run.py and wait for notifications to arrive! After the character gets a notification in-game, reconbot may take up to 10 minutes to detect the notification.

Other notes

Reconbot by default will try to evenly spread out checking API keys over the cache expiry window (which is 10 minutes for ESI), meaning that with 2 API keys in rotation an API key will be checked every ~5 minutes (with 10 keys - every minute), which can be useful to detect alliance or corporation-wide notifications more frequently than only once every 10 minutes.

Supported notifications

As of writing this tool there is little documentation about the types of notifications available and their contents. The following list has been assembled from working experience, is not fully complete and may be subject to change as CCP changes internals:

  • AllWarDeclaredMsg
  • DeclareWar
  • AllWarInvalidatedMsg
  • AllyJoinedWarAggressorMsg
  • CorpWarDeclaredMsg
  • EntosisCaptureStarted
  • SovCommandNodeEventStarted
  • SovStructureDestroyed
  • SovStructureReinforced
  • StructureUnderAttack
  • OwnershipTransferred
  • StructureOnline
  • StructureDestroyed
  • StructureFuelAlert
  • StructureWentLowPower
  • StructureWentHighPower
  • StructureFuelAlert
  • StructureAnchoring
  • StructureUnanchoring
  • StructureServicesOffline
  • StructureLostShields
  • StructureLostArmor
  • TowerAlertMsg
  • TowerResourceAlertMsg
  • StationServiceEnabled
  • StationServiceDisabled
  • OrbitalReinforced
  • OrbitalAttacked
  • SovAllClaimAquiredMsg
  • SovStationEnteredFreeport
  • AllAnchoringMsg
  • InfrastructureHubBillAboutToExpire
  • SovAllClaimLostMsg
  • SovStructureSelfDestructRequested
  • SovStructureSelfDestructFinished
  • StationConquerMsg
  • MoonminingExtractionStarted
  • MoonminingExtractionCancelled
  • MoonminingExtractionFinished
  • MoonminingLaserFired
  • MoonminingAutomaticFracture
  • CorpAllBillMsg
  • BillPaidCorpAllMsg
  • CharAppAcceptMsg
  • CorpAppNewMsg
  • CharAppWithdrawMsg
  • CharLeftCorpMsg
  • CorpNewCEOMsg
  • CorpVoteMsg
  • CorpVoteCEORevokedMsg
  • CorpTaxChangeMsg
  • CorpDividendMsg
  • BountyClaimMsg
  • KillReportVictim
  • KillReportFinalBlow
  • AllianceCapitalChanged

Do you have sample contents of currently unsupported notification types? Consider sharing them by creating an issue, or submit a Pull Request. Any help would be appreciated!

reconbot's People

Contributors

flakas avatar

Watchers

James Cloos avatar

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.