Giter VIP home page Giter VIP logo

insight's Introduction

Project Status

This project and repository is no longer actively maintained or supported. See The Future of Insight document for reasoning and an FAQ. Thank you all for supporting and enjoying Insight over the years!

Fly safe o7

Insight v1.7.0

Build status codecov

Insight provides EVE Online killmail streaming and utility commands for Discord. Insight can stream personal or corporate killboards, detect supercapitals with a proximity radar, estimate ship composition from local chat scans, and more! Killmails and intel are presented in Discord rich embeds containing relevant links and images to quickly identify important information.

This bot features an intuitive interface for creating, modifying, and managing independent feed configurations through simple commands and text dialog. All bot functionality is accessible through documented commands with no hardcoding or complicated configuration steps.

Invite Insight to your Discord server and run !create to begin setting up a feed!

Invite Links

Insight is available publicly hosted for invites directly to Discord servers. These bots are maintained and hosted by the Insight developer.

See hosting Insight if you are interested in hosting your own private instance of Insight.

Public Insight Bot

Discord Bots

Test Bot

  • Insight Test Bot Invite
    • This test bot normally runs the latest development branch build. There are no guarantees of uptime or stability. Data from this test bot is often wiped.

Support Discord

If you have questions, suggestions, or bug reports feel free to drop by the project support server.

Donate

If you enjoy Insight, please consider donating ISK to Natuli in-game.

Table of contents

Feature Overview

  • Entity feeds ideal for personal, corporate, or alliance killboard streaming.
  • Radar feeds ideal for tracking hostile incursions into friendly space, hunting expensive targets within jump range, or detecting capital escalations in real time.
  • Proximity watches ideal for finding potential fleets to fight, tracking hostile fleet movement within your region, or alerting you of nearby hostiles within a few jumps of your base systems.
  • Preconfigured feeds offering custom spins such as: Alliance Tournament system feed, npc officer hunter, AT ship radar, and more!
  • Utility commands such as: local chat scanning with estimated ship composition, top kills, and more!
  • Rich embeds to present mails with color indicating sidebars, hyperlinks, and images.
  • Multiple embed appearance styles varying in size and verbosity.
  • Optional mention system to be alerted of activity in radar feeds.
  • SSO token authentication for allied contact blacklisting in radar feeds.
  • Automatic synchronization of SSO tokens and radar blacklists.
  • Instinctual commands and convenient option dialogs for managing settings.
  • Easy server setup with no hardcoding or confusing configuration.
  • Simultaneous, isolated feeds across multiple servers.
  • Efficient asynchronous design with minimal cpu, memory, disk, and network impact.

Gallery

Commands

When in doubt, run !help. The !help command guides you to every possible command, feature, and modifiable option.

Commands can be prefixed with either !, ?, or @Insight by default. You can add or remove server-wide command prefixes via the !prefix command.

Bot Administration

These commands are only available to users listed in the "INSIGHT_ADMINS" environmental variable.

Command Description
!admin Access the Insight admin console to execute administrator functionality.
!quit Close and shut down the Insight application service.

Server Administration

These commands are available to users that have moderation or owner permissions on a Discord server.

Command Description
!prefix Manage server-wide command prefixes for the bot.

Feeds

These commands are available for users to use in a text channel located in a Discord server.

Command Description
!create Begin setting up a new feed service in this channel. Alias: !new
!lock Lock a feed service from being modified by users without certain Discord channel roles.
!remove Delete the currently configured feed service in this channel.
!settings Modify feed settings and behavior. Alias: !config
!start Start/resume a channel feed from being paused.
!status Display information about the currently running feed.
!stop Pause a channel feed.
!unlock Unlock a feed service to allow any Discord channel user to modify feed configuration.

SSO

These commands are available in channels containing radar or proximity feeds. In a private message to the bot these commands allow for management of personal SSO tokens.

Command Description
!sync Manage SSO tokens for a feed or for the Discord user (when in a private message) to add, delete, and revoke SSO tokens.

Utility

These commands can be used by anyone in any channel (including private messages with the bot).

Command Description
!about Display Insight credits, version information, and bot invite links.
!8ball Shake the 8ball for answers to your questions.
!help Display command information and prefixes.
!limits Display channel / server rate limits and usage stats.
!motd Display the current MOTD for Insight global announcements and updates.
!roll Roll a random number between 0 and 100.
!scan Perform a local scan. Copy and paste local pilots for a recent ship and affiliation overview.
!time Get the current EVE time. Subcommands provide an overview of various world timezones.
!top List the most expensive mails over the last hour, week, month, or year.

More detailed command information is available in the commands wiki.

Permissions

The preconfigured role invite link creates a server role with necessary permissions already assigned. Using the invite link without preconfigured roles requires manual permission configuration.

In intended feed channels the bot requires the following permissions:

Permission Reason
Read Messages Allows the bot to read command events.
Send Messages Allows the bot to communicate and display prompts to users running commands.
Embed Links Allows the bot to post Discord rich embed content containing images (ship renders, player portraits, corp/alliance logos) and hyperlinks (zKillboard and Dotlan).
Mention Everyone Allows the bot to optionally mention @here or @everyone for optional alerts.

Getting started

Entity Feed

This quick start guide will help you set up an alliance killboard tracking feed.

  1. Begin by inviting Insight to your Discord server using one of the provided links.
  2. Ensure Insight has the correct permissions in the intended feed channel.
  3. Run the command: !create and select 'Entity Feed'.
  4. Type in the name of an entity you wish to track. In this case, let's create a feed that tracks alliance Brave Collective. Type the name Brave Collective or whichever entity you wish to track.
  5. Select the display mode if you want to display kills, losses, or both for Brave Collective.
  6. The feed service is successfully configured and running! You should start to see activity whenever a tracked entity participates in PvP. You can now run the command !settings to add or remove entities in your feed. If you wish to remove the feed, run !remove.

Radar Feed

This quick start guide will help you set up a radar feed for tracking supercapital activity within 12 light-years of our base system, Jita.

  1. Begin by inviting Insight to your Discord server using one of the provided links.
  2. Ensure Insight has the correct permissions in the intended feed channel.
  3. Run the command: !create and select 'Radar'.
  4. The bot will ask for the name of a base system. In our example case, enter Jita.
  5. Next, we will be asked for the maximum light-year range from Jita we wish to track targets. Enter 12 or whichever range you prefer.
  6. We will be shown a few prompts asking if we wish to track black ops, regular capitals, and supers. You can track all of these groups or a subset as in our case. Answer no to tracking blops and normal capitals, selecting yes to track supercapitals.
  7. A prompt will ask for the maximum mail age in minutes. Enter 20 as a reasonable limit or some other integer.
  8. The feed service is now fully configured! You can manage settings, add or remove base systems, and more by running the !settings command. Radar feeds feature an optional API synchronized list of allies to blacklist from appearing on the radar, accessible by the !sync command.

Branch overview

Branch Purpose
master Stable with latest stable features.
development Latest features in development.
dev Deprecated branch.
experimental Deprecated branch.

Hosting Insight

There are two ways to run and host Insight yourself if you do not wish to use the public bot.

The recommended and easiest method to host Insight. Images are automatically built on new commits.

See Insight on Docker Hub for Insight container usage and Docker docs for getting started with Docker.

The wiki contains a guide for source installation using a Linux operating system. Running Insight from source is not recommended unless you plan on Insight development.

Frequently asked questions

How do I invite Insight to my Discord server?

You can invite Insight to any server where you have the Manage Server role. Follow the link, select the server, and Insight will be invited. If you are hosting Insight yourself, the invite link will be printed in the program console on program startup.

What Discord permissions does Insight require?

Insight requires the permissions outlined in the permissions section.

How do I set up a new feed and manage its settings?

Creating a feed is as simple as running the command !create and following the dialog prompts to select a type. Running the command !settings allows you to modify feed configuration and behavior.

What's the difference between hosting Insight myself and using the publicly hosted bot?

Functionally, there is no difference. Insight is designed to support simultaneous feeds across multiple servers with no configuration hardcoding. Insight provides an isolated service to each Discord channel, separate from the modification or access of other channels/servers.

Operationally, the publicly hosted bot runs on dedicated, secure hardware to provide 24/7 service and reliability. The publicly hosted bot runs the main branch and is updated, maintained, and secured seamlessly.

How do I run more than one feed service?

Insight can only run one feed service per Discord channel. Create more text channels and create a feed service in each. Note: Insight does not support feeds in direct message or conversations.

How do I add, manage, or remove one of my previously added SSO tokens?

Direct message the bot with the !sync command and select an option. You can always revoke tokens under third party applications.

What do all the stats mean on the bot's watching message?

Insight keeps track of delays for service reliability. See the wiki article for a detailed description.

How do I host Insight myself?

Insight runs on Windows, Linux, or Mac. See the hosting Insight section.

Why do I have to paste my callback url when using the !sync command?

For installation simplicity, Insight does not utilize a callback listener. A listener would require a web server and open new security concerns. In general scenarios, authenticating with a third party website works like this:

  1. Be directed to authenticate with EVE by a third-party service.
  2. Login with EVE and be redirected, through a GET request, back to the service's callback landing page.
  3. A running callback listener would receive the GET request and link the code= parameter of the URL to a PHP session.

Insight follows the same procedure except for step 3. The callback URL must manually be entered by the user as Insight has no web listener or easy way to link Discord users with their tokens. Insight parses the url, extracts the authorization code, and links the token with the unique Discord user ID.

How can I be notified of updates?

Insight's Watching CPU:15% MEM:1.0GB status will change to Watching Update available. The program console will display messages directing to the latest release.

I have an unanswered question, want to request a feature, need help with installation, or report a bug.

Check out the public Discord server listed in the links section.

Credits

  • Fuzzwork - Provides SQLite database conversions of CCP's SDE referenced on initial loading.
  • zKillboard - Provides a centralized database of killmails for the game EVE Online.
  • CCP Games
    • EVE Swagger Interface - EVE's official API used by Insight to lookup names, information, and utilize access tokens.
  • Swagger Codegen - An automatic API client generation tool for services utilizing Swagger definitions.

Licenses

Insight is released under the GNU General Public License v3.0 and the full license is available in the file LICENSE. This project utilizes various Python libraries, each with their own licensing. Insight uses data and names from the game EVE Online subject to its license included in the file CCP.md.

insight's People

Contributors

nathan-ls 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

Watchers

 avatar  avatar  avatar  avatar  avatar

insight's Issues

Initial API Import Redesign

Redesign the CCP static data import methods for better error checking and efficiency.

-Add an ability to reimport
-Add more type imports for things such as fighters, deployables, etc.

Docker-Compose text

Commented out the stack commands to convert it into compose file - hopefully useful.

=======
version: '3.1'
services:
insight:
image: nathanls/insight:latest
#deploy:
#mode: replicated
#replicas: 1
# restart_policy:
#condition: any
environment:
DB_DRIVER: "sqlite3"
SQLITE_DB_PATH: ""
HEADERS_FROM_EMAIL: ""
DISCORD_TOKEN: ""
CCP_CLIENT_ID: ""
CCP_SECRET_KEY: ""
CCP_CALLBACK_URL: ""
REDIS_HOST: "redis"
REDIS_PORT: 6379
REDIS_PASSWORD: "pass"
REDIS_PURGE: "FALSE"
REDIS_SSL: "FALSE"
INSIGHT_ADMINS: "*****; AnotherAdminUserID"
WEBSERVER_ENABLED: "FALSE"
volumes:
- insight-data:/app
#networks:
#- insight-net
redis:
image: redis:6
#deploy:
#mode: replicated
#replicas: 1
#restart_policy:
# condition: any
#networks:
#- insight-net
command: --requirepass "pass"
#networks:
#insight-net:
#driver: overlay
volumes:
insight-data:

Compact visual options

Add options to all feeds for a compact mode, reducing the amount of space each visual uses.

Example:

Compact
This visual would have a space reduction of around 50%.

Ultra compact
Text heading, a small ship picture, and link to the mail.

Feature Request

This 2 had been really nice to have

Entity feed: Show kills from entities only occurring within a region/system
Proximity Watch: A way to filter out mtu kills

K

Preconfigured, no setup Entity and CapRadar feeds.

Create preconfigured feeds that require no setup for different tasks.
Examples:

  • Entity feed that tracks only supercapital losses regardless of affiliation
  • Entity feed that tracks losses only in Abyssal space
  • CapRadar feed that shows supercapital activity in universe regardless of standings or base system.

Code style fixes and import recheck.

I imagine Insight breaks just about every style guideline for Python imaginable. Quite a few classes and files need to be renamed for easier management. Some of the module importing is pretty messy and needs a rework.

Insight is stable so I don't want to refactor and accidentally miss something that breaks for the initial v1.0.0 release. This refactor is a definite todo in an upcoming update.

Breakdowns of Entity Feed

Automatic post on calendar days/weeks/months or ability to send command to get a kill/loss breakdown for the configured entity feed.
Not sure how much of this is possible or whether it would require significant work.

Example: !breakdown daily/weekly/monthly
Kills (value): 155 (14.6b)
Losses (value): 62 (4.56b)
Kill Efficiency (value): 71% (76%)
Top 3 pilots:

  • xyz of Generic Corp [GEN] with 50 kills worth 6.3b
  • abc of Another Corp [ANOGE] with 80 kills worth 5.2b
  • xyz of Generic Corp [GEN] with 19 kills worth 1.8b
    Top 3 kills:
  • Pilot xyz flying Avatar killed Capsule of zyx worth 4,8b [zkill link]
  • Pilot xyz flying Erebus killed Naglfar of zyx worth 3.8b [zkill link]
  • Pilot xyz flying Jaguar killed Wolf of zyx worth 380m [zkill link]
    Top 3 losses:
  • Pilot xyz flying Avatar was killed by Jaguar of zyx worth 4,8b [zkill link]
  • Pilot xyz flying Erebus was killed by Caldari Shuttle of zyx worth 3.8b [zkill link]
  • Pilot xyz flying Jaguar was killed by Enyo of zyx worth 380m [zkill link]

docker image for RPI

Can we getting as well a docker image that works on a rpi ?

That would be awesome

Jump midpoint routing calculation algorithm.

Create an algorithm to correctly calculate the number of midpoints between two systems, taking map/system geometry into account. In most cases, there is never a system that acts as a perfect midpoint between systems so this algorithm must compensate for mapping the correct jump route in the least number of mids.

Upgrade

Hello,

Is it possible to exclude my personnal alliance of tracking fleet ?
because i track fleet and my personnal ally isn't very good for that ...

!lock command to prevent any channel users from modifying a feed.

Currently, any user with the send text message role can access feed settings. While not a security issue, it can be annoying if a troll decides to delete your feed.

Ideally I want to add a !lock command to optionally allow only users with the Manage Channel role to issue commands.

Current workaround: Remove the Send Messages role from users you don't want to access Insight commands in a feed channel.

!status command and statistic module.

Create a statistic modules for tracking Insight service speed. The statistics module will set the bot's "currently playing: " status to display service statistics and CPU utilization.

The !status command will display tracking information related to a channel.

Feature Request : Filter

Would like to see if we can add a utility to filter out certain types of mails or other options. Sometimes the bot floods due to events that we wish we could specify a configuration or filter ignore these posts or push them elsewhere.

I know someone else requested something as such. Can we contribute to the library with some assistance or fork in general?

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.