This is the repository for HalpyBOT, the Hull Seals IRC Chatbot Assistant.

Overview

HalpyBOT 1.4.2

This is the repository for HalpyBOT, the Hull Seals IRC Chatbot Assistant.

Description

This repository houses all of the files required to build and host your own version of the Hull Seals IRC Chat Assistant, known to us as HalpyBOT. The system is how we manage cases, recite prepared instructions for Clients and Seals, and monitor our IRC network - all in one convenient bot.

This bot is in ACTIVE DEVELOPMENT, with many core features not yet implemented.

Installation

Requirements

  • Python 3.5+
  • Asyncio Python Library
  • Pydle Python Library
  • Pure-SASL Python Library
  • MySQL Python Library
  • NumPy Python Library
  • Requests Python Library
  • Pytest Python Library
  • Boto3 Python Library
  • Aiohttp Python Library

Usage

To install, download the latest release from our repository. Upload and extract the files to the directory or subdirectory you wish to install from, and create your own config.py to fit your server, following the example config file provided.

Troubleshooting

  • Upon installation, be sure to replace the information in config.py to match your own details.
  • Additionally, be sure to create a user account and SASL credentials for your IRC user.
  • One of the most common sources of issues is your TLS settings in the bot - check these!
  • If you are having issues, look through the closed bug reports.
  • If no issue is similar, open a new bug report. Be sure to be detailed.
  • The notification module will not load if no Amazon Web Services config data is provided. The bot will run just fine without these, but staff notification functions will not be available.

Support

The best way to receive support is through the issues section of this repository. As every setup is different, support may be unable to help you, but in general we will try when we can. If for some reason you are unable to do so, emailing us at Code[at]hullseals[dot]space will also reach the same team.

Roadmap

In the short term, the main priorities are to add more functions for the fact module, build a better command handling framework, and a reverse API for the client webhook Later down the line, we hope to expand the functionality of HalpyBOT to be a fully functional IRC assistant for our Seals.

As always, bugfixes, speed, and stability updates are priorities as discovered, as well as general enhancements over time.

Contributing

Interested in joining the Hull Seals Cyberseals? Read up on the Welcome Board.

Authors and Acknowledgements

The majority of this code was written by David Sangrey, Rik Overveld and Feliksas

Many thanks to all of our Contributors.

License

This project is governed under the GNU General Public License v3.0 license.

Project Status

The bot is running v1.3.1 in production, but still under active development.

Comments
  • [RELEASE] 1.6.0

    [RELEASE] 1.6.0

    In GitLab by @Rixxan on Jun 13, 2022, 20:38

    Added:

    • Added a number of Pytest-based tests. (@Rixxan, @Rik079)
    • Added encoding markers to a number of filesystem commands. (@Rixxan)
    • Added proper attribution to exceptions. (@Rixxan)
    • Added a number of new logging entries. (@Rixxan)
    • Added a number of new docstrings and code comments. (@Rixxan)
    • Added loguru for logging system duties. (@Rixxan)
    • Adds cattr structures for user info fetching. (@theunkn0wn1)
    • Added missing update to fallback in listsupport. (@Rixxan)
    • Added a context manager for notification timer. (@Rik079)
    • Added a number of missing await statements. (@Rixxan)
    • Enabled compresison support for aiohttp. (@Rixxan)
    • Added EDSM Mocking for Tests. (@Rixxan, @theunkn0wn1)
    • Added bot mocking for tests. (@Rixxan, @theunkn0wn1)
    • Added a warning to README for users on Linux. (@Rixxan)
    • Added the ability to use custom shutdown messages. (@Rixxan)
    • Added EDDB Dump File reader for diversion stations. (@Rixxan)
    • Added a Diversion command to find the 5 closest systems to a given EDSM location. (@Rixxan, @theunkn0wn1)
    • Added a handler and logger for Pylde-unknown IRC commands. (@Rixxan)

    Changed:

    • Several formatting updates. (@Rixxan, @theunkn0wn1, @Rik079)
    • Changed how exceptions are logged and presented. (@Rixxan)
    • Converted a number of if-true-else statements to bools. (@Rixxan)
    • Renamed a number of improperly-named functions. (@Rixxan)
    • Re-ordered a number of imports to comply with conventions. (@Rixxan)
    • Fixed an issue with an improperly-labeled exception. (@Rixxan)
    • Changed the attribution of a system exit command. (@Rixxan)
    • Fixed a number of imports to more specific values. (@Rixxan)
    • Improved logic of a number of tests. (@Rixxan)
    • Renamed a number of improperly-named variables. (@Rixxan)
    • Recategorized a number of improperly leveled errors. (@Rixxan)
    • Updated requirements to more recent versions. (@Rixxan)
    • Fixed a number of spelling and grammar mistakes. (@Rixxan)
    • Updated the copyright date on numerous files. (@Rixxan)
    • Various logic improvements. (@Rixxan)
    • Changed how variables are interpolated into logging entries. (@Rixxan)
    • Fixed a few "FIXME" and "TODO"s. (@Rixxan)
    • Fixed a bug with how lengths of arguments were processed. (@Rixxan)
    • Fixed a bug that would occur due to unintentional redefining of inbuilt functions. (@Rixxan)
    • Fixed a crash that could occur if the bot was launched in Offline mode. (@Rixxan)
    • Fixes a bug that could cause a regression in future releases of Pydle. (@theunkn0wn1)
    • Fixes an incorrect exception instantiation. (@theunkn0wn1)
    • Fixes a bug due to an incorrect argument in the partchannel command. (@Rixxan)
    • Fixes a bug due to a mutable default variable. (@theunkn0wn1)
    • Updates various documentation files. (@Rixxan)
    • Updated how Discord webhook configuration options are stored. (@Rik079)
    • Refactored the notification formatting system. (@Rik079)
    • Unified dataclass method with attrs. (@Rixxan)
    • Changed EDSM API coding to improve forward-compatibility. (@Rixxan)
    • Moved test fixtures to their own subdirectory. (@Rik079)
    • Fixed an issue with logging system where tasks were not properly defined. (@Rixxan)
    • Improve and class-ify Landmarks and Carriers system. (@Rixxan)
    • Fixed a bug that could occur on --new cache overrides with EDSM. (@Rixxan)
    • Fixed a bug that could occur if a system existed, but was outside of Landmark coverage. (@Rixxan)

    Removed:

    • Removed some extraneous exception handlers. (@Rixxan)
    • Removed some in-line string breaks. (@Rixxan)
    • Removed a number of useless else statements. (@Rixxan)
    • Removed a number of useless f-strings. (@Rixxan)
    • Removed a number of useless pass statements. (@Rixxan)
    • Removed a number of unused variables. (@Rixxan)
    • Removed a number of useless keys lookups from dicts. (@Rixxan)
    • Removed Grafana logging system. (@Rixxan)
    • Removed some duplicate functions. (@Rixxan)
    • Removed some duplicate tests. (@Rixxan)
    • Removes an unnecessary pool. (@theunkn0wn1)
    • Removed some unnecessary dependencies. (@Rixxan)
    • Removed a number of useless imports. (@Rixxan)
    • Removed a number of obsolete ancillary files. (@Rixxan)
    • Removed a number of unnecessary imports. (@Rixxan)
    • Removed a few Global variables. (@Rixxan)
    code review feature 
    opened by Rixxan 66
  • [Halpy-136] Add EDDB Diversion Station Loader - [merged]

    [Halpy-136] Add EDDB Diversion Station Loader - [merged]

    Merges feature/halpy-136 -> feature/halpy-120c

    Adds a system to generate a list of all stations in the galaxy with repair functionality, and uses the new !diversion command to display the 5 closest stations in the galaxy to a client using EDSM lookup coordinates.

    EDDB does not have a public API, so this tool is needed to filter down and get the closest stations, very similar to the current DSSA and Landmark systems.

    Closes #136

    gitlab merge request 
    opened by Rixxan 44
  • [Feature] Add additional processing to EDSM - [merged]

    [Feature] Add additional processing to EDSM - [merged]

    Merges feature/edsm-malformed-processor -> develop

    This helps HalpyBOT tolerate and process a malformed response from EDSM. This is useful to help specify down where an error is occurring with EDSM in the event of a malformed response, as seen with Abildgaard Jadrake.

    gitlab merge request 
    opened by Rixxan 26
  • [Entry Logic] Change Entry Handover - [merged]

    [Entry Logic] Change Entry Handover - [merged]

    Merges feature/pydle-entry-improvement -> develop

    Pydle 1.x+ (and probably earlier, let's be honest) supports a much cleaner and simpler entry point.

    Also removes a few lines that weren't actually needed or doing anything.

    Renames a few CLI functions to be more descriptive of what they are actually doing.

    Removes an unsynchronized cross-thread WRITE condition that could cause undefined behavior due to a potential race condition. This behavior has been improved to only an unsynchronized read condition, which is still not great but is not as terrible. This behavior should be revisited and eliminated in 2.0 or earlier if able. (Thanks, @theunkn0wn1!)

    gitlab merge request 
    opened by Rixxan 23
  • Cleanup and Audit - HBOT

    Cleanup and Audit - HBOT

    As part of 1.6, the existing code in this repository should be reviewed.

    • [x] Is all code in line with PEP8 Standards?
    • [x] Is all code as efficient as possible?
    • [x] What errors, if any, are present in the current code?
    • [x] Are any unused assets removed?
    • [ ] What can be done to improve the documentation?
    • [ ] What can be done to improve the speed and performance of the bot?
    in progress 
    opened by Rixxan 17
  • [Halpy-123a] Audit Stage One - [merged]

    [Halpy-123a] Audit Stage One - [merged]

    Merges feature/Halpy-123a -> develop

    Stage one of the 1.6 Complete Feature Audit. Related to #123.

    While this does not close the audit, enough changes have been made that this should be reviewed before the next step.

    As such, there are still a number of TODOs.

    Changes:

    • Update of Copyright year
    • Reorder Imports
    • Update Variable Names to PEP8 Conventions
    • Style Updates (using BLACK)
    • Removal of redundant Fstrings
    • Removal of useless return-else statements
    • Refactoring /src/ to /halpybot/
    • Removal of unused variables
    • Update of various requirements to later versions
    • Addition of numerous missing docstrings
    • Removal of useless except-raise statements
    • Update of a number of invalid links
    • Renaming of landmark.json attributes
    • Spacing updates on commands.json
    • Refactoring of help to bot_help to prevent redefining of inbuilt
    • Specify encoding on opened files
    • Sacrifice a Goat
    • Update exceptions to correct type
    • Better Logging of Exceptions
    • Prevent Error Messages from containing exception threads
    • Begin update of logging to loguru
    • Remove redundant information from requirements
    • Update logging of errors to be more clear
    • Removal of redundant duplicate code in cardinal_flip
    • Update Argument Test Logic for Help System
    • Completely Rework the EDSM Lookup System (Thanks theunkn0wn1)
    • Rename duplicate functions
    • Fix incorrect get_help searches
    • Rename decorators to PEP8 standards
    • Remove fstrings from logging system
    • Update True If to BOOL checks
    • Remove some keys() search to just dict
    • Explicitly add FROM to a number of exceptions
    • Remove default arguments from some functions
    • Set maxsplit on some fact checks
    • Remove some unused imports
    • Add a few more tests to EDSM
    • Change type() test check to isInstance()
    • Make WHOIS more tolerant of Pydle changes
    • Fix an incorrectly assigned variable in PartChannel
    • Remove the POOL from start.py (@theunkn0wn1)
    • Fix a mutable default variable (@theunkn0wn1)
    gitlab merge request 
    opened by Rixxan 16
  • Add Grafana board for HalpyBOT

    Add Grafana board for HalpyBOT

    In GitLab by @rik079 on Sep 28, 2021, 09:41

    Board would log all events mentioned in a Word document somewhere in the CS Discord. As of the time of creating this issue, no database implementation exists yet, but this shouldn't stop us from putting in most handlers that would pass the actual log events to a to-be-built module, awaiting the creation of all necessary DB elements.

    feature in progress 
    opened by Rixxan 15
  • [HALPY 98] Logging improvements - [merged]

    [HALPY 98] Logging improvements - [merged]

    In GitLab by @stuntphish on Sep 20, 2021, 15:42

    Merges feature/halpy-98 -> develop

    Improvement of logging infrastructure throughout the code base. Changes are as follows:

    • Improvement of logging practices, adding a distinct logger for each module which will propagate logs up to the configured root logger created in main.py
    • Addition of log files along side CLI logging. Logs are rotated weekly and being retained for 3 months
    • Creation of log folder if it does not exist
    gitlab merge request 
    opened by Rixxan 11
  • [Halpy-104] Improve Command Descriptors and Other Enhancements - [merged]

    [Halpy-104] Improve Command Descriptors and Other Enhancements - [merged]

    Merges feature/halpy-104 -> develop

    Closes #104, #72

    Updates minimum requirements for dependencies, improves pythonic syntax, adds argument validation for most commands, adds !rrjoin command, moves About command to the proper directory, a few minor command output corrections, and new shutdown alias.

    gitlab merge request 
    opened by Rixxan 10
  • [HALPY-24](partial) Shutdown command and logging changes - [merged]

    [HALPY-24](partial) Shutdown command and logging changes - [merged]

    In GitLab by @feliksas on Nov 1, 2020, 12:44

    Merges feature/shutdown_cmd -> master

    • Added shutdown command
    • Changed log format to include a timestamp

    part of #24

    gitlab merge request 
    opened by Rixxan 10
  • [HALPY-139] Audit of all CLIs - [merged]

    [HALPY-139] Audit of all CLIs - [merged]

    In GitLab by @rik079 on Nov 1, 2022, 17:07

    Merges feature/halpy-139 -> master

    Added:

    • Implemented pathlib-based logic to allow running of CLIs from anywhere. (@Rixxan)

    Changed:

    • Fixed a bug where the BackupFactModule would not register a "Yes" input. (@Rixxan)
    • Renamed a number of variables to be more descriptive of purpose. (@Rixxan)
    • Fixed the DSSAUpdater CLI to work with the current versions of the DSSA Tracker. (@rik079)

    Removed:

    • Removed the CLI Config files from the DSSA Updater. (@Rixxan)
    • Removed a number of unused global variables. (@Rixxan)
    • Removed a few unneeded imports. (@Rixxan)

    Closes #139

    gitlab merge request 
    opened by Rixxan 9
  • Only fire !welcome once per named client

    Only fire !welcome once per named client

    A cache system (similar to lookups) should be introduced so that the !welcome command (if args/client name is given) is only fired once per client. This will reduce spam in channel as well as confusion as to who is doing what.

    Suggested format:

    !welcome <--force> (clientName)

    if no args, simply fire the !welcome without a name, thus avoiding pinging the user. This will probably use parts of https://gitlab.com/hull-seals/code/irc/halpybot/-/blob/develop/src/packages/edsm/edsm.py#L94-L100 as well as command masking from https://gitlab.com/hull-seals/code/irc/halpybot/-/blob/develop/src/commands/caseutils.py#L27

    recommend also including a check for -LL where LL is a two-letter language code

    feature 
    opened by Rixxan 1
  • Implement Unit Testing

    Implement Unit Testing

    Our project is big enough we can't check absolutely everything at this point. We need to develop proper unit testing (and put writing a new test as a prerequisite to any merges)

    in progress 
    opened by Rixxan 1
  • "Seen" database

    This will keep a log of all nicknames HalpyBOT has seen before, and shout a welcome message to the CMDR on their first (non-rescue) join to #Seal-Bob.

    Allows Seals to know when a new guest joins, as well as passing out valuable information the first time new potential pups join.

    opened by Rixxan 0
  • "Legendary" Rescue Submission Option

    As part of SACM, add the ability for Seals to propose rescues from your fellow Seals that go above and beyond the standard rescue for special recognition.

    sacm 
    opened by Rixxan 0
  • Automatically Generate PPWK Link

    Automatically Generate PPWK Link

    As part of SACM, HalpyBOT should automatically create a link to semi-filled PPWK, using custom generated shortlinks (YOURLS?) given the correct API access. Requires PPWK having a dedicated URL schema to automatically autofill ppwk.

    Blocked by https://gitlab.com/hull-seals/code/website-subsections/paperwork/-/issues/4

    sacm 
    opened by Rixxan 6
Releases(v1.6.5)
  • v1.6.5(Jan 1, 2023)

    Changelog

    Added:

    n/a

    Changed:

    • Fixed an issue that could occur if a user did not exist when looking up a user's WHOIS data. (@Rixxan)
    • Fixed a bug that could occur if a passed nickname was provided with excess punctuation. (@Rixxan)

    Removed:

    n/a

    Source code(tar.gz)
    Source code(zip)
  • v1.6.4(Jan 1, 2023)

    Changelog

    Added:

    n/a

    Changed:

    • Fixed a race condition that could result from undefined behavior due to unsynchronized cross-thread read conditions. (@Rixxan, @theunkn0wn1)
    • Moved logger setup to its own function (@Rixxan)
    • Changed the entry point used to interact with Pydle. (@Rixxan)

    Removed:

    • Removed some useless asyncio code that didn't actually do anything. (@Rixxan)
    • Removed a few unneeded imports. (@Rixxan)
    Source code(tar.gz)
    Source code(zip)
  • v1.6.3(Jan 1, 2023)

    Changelog

    Added:

    • Implemented pathlib-based logic to allow running of CLIs from anywhere. (@Rixxan)

    Changed:

    • Fixed a bug where the BackupFactModule would not register a "Yes" input. (@Rixxan)
    • Renamed a number of variables to be more descriptive of purpose. (@Rixxan)
    • Fixed the DSSAUpdater CLI to work with the current versions of the DSSA Tracker. (@rik079)

    Removed:

    • Removed the CLI Config files from the DSSA Updater. (@Rixxan)
    • Removed a number of unused global variables. (@Rixxan)
    • Removed a few unneeded imports. (@Rixxan)
    Source code(tar.gz)
    Source code(zip)
  • v1.6.2(Jan 1, 2023)

    Changelog:

    Added:

    n/a

    Changed:

    • Updated announcer example file to include paperwork ID. (@Rixxan)
    • Fixed a bug that could result in calling the system result in the coords command before assignment. (@Rixxan)
    • Minor edits to the printout of the shorten command. (@Rixxan)
    • Refactored GET requests to a single location with aiohttp. (@Rixxan)
    • Removed a single-character variable. (@Rixxan)
    • Minor spelling and grammar changes. (@Rixxan)
    • Updated requirements files to latest known working versions. (@Rixxan)

    Removed:

    • Removed a few instances of unused imports. (@Rixxan)
    Source code(tar.gz)
    Source code(zip)
  • v1.6.1(Jan 1, 2023)

    Changelog:

    Added:

    • Added the ability for the bot to link up with a YOURLS URL shortener. (@Rixxan)
    • Added a number of new logging entries. (@Rixxan)
    • Added a new EDSM-linked exception for more detailed error logging and stability. (@Rixxan)
    • Added a new test condition to validate handling of incomplete EDSM responses. (@Rixxan)

    Changed:

    • Replaced all uses of python lower() with python casefold() (Thanks, @theunkn0wn1). (@Rixxan)
    • Updated documentation for new-file standards. (@Rixxan)
    • Changed a number of imports to fix duplicate import paths. (@Rixxan)

    Removed:

    • Removed a number of copyright year slugs that did nothing but cause problems. (@Rixxan)
    • Removed a comment that served no purpose anymore. (@Rixxan)
    • Removed a few instances of unreachable code. (@Rixxan)
    Source code(tar.gz)
    Source code(zip)
  • v1.6.0(Jan 1, 2023)

    Changelog:

    Added:

    • Added a number of Pytest-based tests. (@Rixxan, @Rik079)
    • Added encoding markers to a number of filesystem commands. (@Rixxan)
    • Added proper attribution to exceptions. (@Rixxan)
    • Added a number of new logging entries. (@Rixxan)
    • Added a number of new docstrings and code comments. (@Rixxan)
    • Added loguru for logging system duties. (@Rixxan)
    • Adds cattr structures for user info fetching. (@theunkn0wn1)
    • Added missing update to fallback in listsupport. (@Rixxan)
    • Added a context manager for notification timer. (@Rik079)
    • Added a number of missing await statements. (@Rixxan)
    • Enabled compresison support for aiohttp. (@Rixxan)
    • Added EDSM Mocking for Tests. (@Rixxan, @theunkn0wn1)
    • Added bot mocking for tests. (@Rixxan, @theunkn0wn1)
    • Added a warning to README for users on Linux. (@Rixxan)
    • Added the ability to use custom shutdown messages. (@Rixxan)
    • Added EDDB Dump File reader for diversion stations. (@Rixxan)
    • Added a Diversion command to find the 5 closest systems to a given EDSM location. (@Rixxan, @theunkn0wn1)
    • Added a handler and logger for Pylde-unknown IRC commands. (@Rixxan)

    Changed:

    • Several formatting updates. (@Rixxan, @theunkn0wn1, @Rik079)
    • Changed how exceptions are logged and presented. (@Rixxan)
    • Converted a number of if-true-else statements to bools. (@Rixxan)
    • Renamed a number of improperly-named functions. (@Rixxan)
    • Re-ordered a number of imports to comply with conventions. (@Rixxan)
    • Fixed an issue with an improperly-labeled exception. (@Rixxan)
    • Changed the attribution of a system exit command. (@Rixxan)
    • Fixed a number of imports to more specific values. (@Rixxan)
    • Improved logic of a number of tests. (@Rixxan)
    • Renamed a number of improperly-named variables. (@Rixxan)
    • Recategorized a number of improperly leveled errors. (@Rixxan)
    • Updated requirements to more recent versions. (@Rixxan)
    • Fixed a number of spelling and grammar mistakes. (@Rixxan)
    • Updated the copyright date on numerous files. (@Rixxan)
    • Various logic improvements. (@Rixxan)
    • Changed how variables are interpolated into logging entries. (@Rixxan)
    • Fixed a few "FIXME" and "TODO"s. (@Rixxan)
    • Fixed a bug with how lengths of arguments were processed. (@Rixxan)
    • Fixed a bug that would occur due to unintentional redefining of inbuilt functions. (@Rixxan)
    • Fixed a crash that could occur if the bot was launched in Offline mode. (@Rixxan)
    • Fixes a bug that could cause a regression in future releases of Pydle. (@theunkn0wn1)
    • Fixes an incorrect exception instantiation. (@theunkn0wn1)
    • Fixes a bug due to an incorrect argument in the partchannel command. (@Rixxan)
    • Fixes a bug due to a mutable default variable. (@theunkn0wn1)
    • Updates various documentation files. (@Rixxan)
    • Updated how Discord webhook configuration options are stored. (@Rik079)
    • Refactored the notification formatting system. (@Rik079)
    • Unified dataclass method with attrs. (@Rixxan)
    • Changed EDSM API coding to improve forward-compatibility. (@Rixxan)
    • Moved test fixtures to their own subdirectory. (@Rik079)
    • Fixed an issue with logging system where tasks were not properly defined. (@Rixxan)
    • Improve and class-ify Landmarks and Carriers system. (@Rixxan)
    • Fixed a bug that could occur on --new cache overrides with EDSM. (@Rixxan)
    • Fixed a bug that could occur if a system existed, but was outside of Landmark coverage. (@Rixxan)

    Removed:

    • Removed some extraneous exception handlers. (@Rixxan)
    • Removed some in-line string breaks. (@Rixxan)
    • Removed a number of useless else statements. (@Rixxan)
    • Removed a number of useless f-strings. (@Rixxan)
    • Removed a number of useless pass statements. (@Rixxan)
    • Removed a number of unused variables. (@Rixxan)
    • Removed a number of useless keys lookups from dicts. (@Rixxan)
    • Removed Grafana logging system. (@Rixxan)
    • Removed some duplicate functions. (@Rixxan)
    • Removed some duplicate tests. (@Rixxan)
    • Removes an unnecessary pool. (@theunkn0wn1)
    • Removed some unnecessary dependencies. (@Rixxan)
    • Removed a number of useless imports. (@Rixxan)
    • Removed a number of obsolete ancillary files. (@Rixxan)
    • Removed a number of unnecessary imports. (@Rixxan)
    • Removed a few Global variables. (@Rixxan)
    Source code(tar.gz)
    Source code(zip)
  • v1.5.3(Jan 1, 2023)

    Changelog:

    Added:

    • Added a function to replace duplicate coordinate finding fragments. (@Rixxan)
    • Added some more logging keys to EDSM module. (@theunkn0wn1)
    • Added attrs and cattrs to the project requirements. (@theunkn0wn1)
    • Add expected EDSM JSON API response to test files. (@theunkn0wn1)

    Changed:

    • Completely reworked the EDSM linkup to be more resilient and efficient. (@theunkn0wn1)
    • Refactored /src/ to /halpybot/. (@theunkn0wn1, @Rixxan)
    • Fixed an improperly formatted regex string. (@Rixxan)
    • Upgraded a number of required libraries to the latest versions. (@Rixxan)
    • Changed a number of function and variable names to conform with PEP8 Standards. (@Rixxan)
    • Fixed a few documentation links. (@Rixxan)
    • Fixed a number of inconsistent whitespace issues. (@Rixxan)
    • Removed a few arguments that equal their defaults. (@Rixxan)
    • Updated the request filtering to allow a number of valid responses. (@Rixxan)
    • Renamed attribute titles for the landmark json file. (@Rixxan)

    Removed:

    • Removed some improperly set asyncio marks. (@theunkn0wn1, @Rixxan)
    • Removed a redundant requirement entry. (@theunkn0wn1)
    Source code(tar.gz)
    Source code(zip)
  • v1.5.2(Jan 1, 2023)

    Changelog:

    Added:

    • Added the Git version to the main server GET route if running HalpyBOT as a Git Repo (Recommended). (@Rixxan)
    • Added command argument validation to Part command. (@Rixxan)

    Changed:

    • Updated the default configuration example file. (@Rixxan)
    • Updated the default UserAgent string. (@Rixxan)
    • Updated included Help json file to include more administrative commands. (@Rixxan)
    • Updated Help command logic to allow for multiple command queries. (@Rixxan)
    • Fixed a number of spelling and grammar mistakes in the documentation files. (@Rixxan)
    • Fixed an issue where negative numbers or decimals would break the Coords command. (@Rixxan)
    • Corrected a problem with Twitter strings revealing too much information. (@Rixxan)
    • Updated documentation instructions for installing HalpyBOT. (@Rixxan)

    Removed:

    • Removed a few unused, out-of-date debug files. (@Rixxan)
    Source code(tar.gz)
    Source code(zip)
  • v1.5.1(Jan 1, 2023)

    Changelog:

    Added:

    n/a

    Changed:

    • Fixed an issue with Twitter API v2 preventing cases from being sent to Twitter (@Rixxan, @Rik079)

    Removed:

    n/a

    Source code(tar.gz)
    Source code(zip)
  • v1.5(Jan 1, 2023)

    A major content addition to HalpyBOT, focusing on quality of life and new feature development.

    Added

    • HalpyBOT: Add a basic notice handler. (@Rik079)
    • HalpyBOT: Added ability to disable the Twitter module. (@Rik079)
    • HalpyBOT: Added packaged Backup Fact Updater module. (@Rik079)
    • HalpyBOT: Added packaged DSSA Location Updater module. (@Rik079)
    • HalpyBOT: Added contextual help options to most commands. (@Stuntphish, @Rixxan)
    • HalpyBOT: Added a system to create a Log file and folder if it does not exist. (@Stuntphish)
    • HalpyBOT: Added support for requests sent with either LF or CRLF. (@Stuntphish, @Rixxan)
    • HalpyBOT: Added a method to check given system names for misspellings or completeness in EDSM. (@Stuntphish)
    • HalpyBOT: Added a custom UserAgent check for HalpyBOT so people know who is poking their servers. (@Rixxan)
    • HalpyBOT: Added timestamps to log output. (@Stuntphish)
    • HalpyBOT: Added a dedicated "RRJoin" Command. (@Rixxan)
    • HalpyBOT: Added an additional alias for the shutdown command. (@Rixxan)
    • HalpyBOT: Added additional aliases to the CyberSignal command. (@Rixxan)
    • HalpyBOT: Added timestamp to halpybot status reporting. (@Rixxan)
    • HalpyBOT: Added offline mode status to halpybot status reporting. (@Rixxan)
    • HalpyBOT: Added a feature where if Landmark systems fail, the nearest DSSA carrier is found. (@Rixxan)
    • HalpyBOT: Added a warning if non-registered users are assigned to a case with the !go fact/command. (@Rixxan)
    • HalpyBOT: Added a system cleaner function to improve the accuracy of EDSM-facing system commands. (@Stuntphish)
    • HalpyBOT: Added a feature where HalpyBOT will send an error message on unexpected disconnect. (@Rixxan)
    • HalpyBOT: Added a logging system for errors to SQL. (@Rik079)
    • HalpyBOT: Added a number of tests for HalpyBOT's code. (@Rixxan)
    • HalpyBOT: Added in-channel responses to redirect commands. (@Rixxan)
    • HalpyBOT: Added aioHTTP for asynchronous HTTP methods. (@Rixxan)
    • HalpyBOT: Added several missing entries in the Help module. (@Rixxan)
    • HalpyBOT: Added GitPython "Build Number" check to About if run in Git repo (Recommended). (@Rixxan)
    • HalpyBOT: Added non-ascii filtering to Fact manager. (@Rixxan)

    Changed

    • HalpyBOT: Moved the startup script from main.py to start.py. (@Rik079)
    • HalpyBOT: Updated all dependencies to the latest versions. (@Rixxan)
    • HalpyBOT: Updated Twitter case logic for announcement formats. (@Rik079)
    • HalpyBOT: Added DocStrings to various functions. (@Rik079, @Rixxan)
    • HalpyBOT: Updated valid Python version to 3.8 or 3.9. (@Rik079)
    • HalpyBOT: Updated backup facts cache for compatibility and completeness. (@Rik, @Rixxan)
    • HalpyBOT: Some multi-line commands will now only reply in DMs. (@Rixxan)
    • HalpyBOT: Completely reworked HMAC authentication for security. (@Stuntphish)
    • HalpyBOT: Logging can now log CLI and File levels differently. (@Stuntphish)
    • HalpyBOT: The shutdown command will now log and shout out who ordered it to shut down. (@Rixxan)
    • HalpyBOT: Updated most of the project to follow PEP8 guidelines. (@Rixxan, @Rik)
    • HalpyBOT: Refactored the command handler. (@Rik)
    • HalpyBOT: Fixed a bug with the announcer module if EDSM is disabled. (@Rixxan)
    • HalpyBOT: Fixed an issue with the whoami command for a particular user. (@Rixxan)
    • HalpyBOT: Moved the About command to the new help.py file. (@Rixxan)
    • HalpyBOT: Fixed a number of misspellings and grammatical errors in documentation and replies. (@Rixxan)
    • HalpyBOT: Fixed an issue where the database functions were not properly declared in their init files. (@Rixxan)
    • HalpyBOT: Suppressed a non-issue where Pydle didn't know how to respond to certain server informational posts. (@Rik, @Rixxan)
    • HalpyBOT: Changed the WHOIS lookup to use database stored procedures. (@Rixxan, @KennyRosser)
    • HalpyBOT: Fixed an issue where multiple given arguments in a whois lookup could break the query. (@Rixxan)
    • HalpyBOT: Updated Tweepy processing to adapt to newest versions of Tweepy exception handling. (@Rixxan)
    • HalpyBOT: Fixed a bug that could cause the force join command to fail if CMDR and Channel names were inverted. (@Rixxan)
    • HalpyBOT: The logger will now rotate log files every Monday, and keep the last 12 files. (@Stuntphish)
    • HalpyBOT: Fixed an issue where multiple spaces in commands would cause the bot to improperly parse arguments. (@Rixxan)
    • HalpyBOT: Fixed an issue where required values were missing if a WHOIS command was used on a user not in any channels or on services. (@Rixxan, @Rik079)
    • HalpyBOT: Fixed an issue where all disconnects were considered unexpected. (@Rixxan)
    • HalpyBOT: Fixed an issue where language codes were not processed if in capital letters. (@Rixxan)
    • HalpyBOT: Fixed an issue where a CMDR existed, but was outside of landmark range. (@Rixxan)
    • HalpyBOT: Fixed an issue where coordinates would attempt to be processed if they were not all numeric. (@Rixxan)
    • HalpyBOT: Fixed an issue where manual cases could be processed with bad arguments. (@Rixxan)

    Removed

    • HalpyBOT: Removed a few unused imports. (@Stuntphish, @Rixxan)
    • HalpyBOT: Removed Facts from commands.json. (@Stuntphish)
    • HalpyBOT: Removed a few input validations that were made obsolete by the Help command. (@Rixxan)
    • HalpyBOT: Removed an unused loop variable for the API server. (@Rixxan)
    • HalpyBOT: Removed Requests library and dependencies. (@Rixxan)
    Source code(tar.gz)
    Source code(zip)
  • v1.4.2(Jan 1, 2023)

    Minor hotfix that addresses a bug in the Twitter announcer

    Changelog

    Changed:

    • Fixed a bug that would prevent Twitter announcements from being sent to @HullSealCases
    Source code(tar.gz)
    Source code(zip)
  • v1.4.1(Jan 1, 2023)

    Minor release, addition of Twitter support

    Changelog:

    Added:

    • Twitter Case Shout Functionality.

    Changed:

    • Fixed a bug with TSPING failing if no arguments were given.
    Source code(tar.gz)
    Source code(zip)
  • v1.4(Jan 1, 2023)

    The fourth major feature release, with a focus on utility and removing points of failure.

    Changelog:

    Added:

    • HalpyBOT can now check the Frontier-provided server status. (@Rixxan).
    • HalpyBOT can now set user VHOSTS with an API call. (@Rixxan).
    • Added entry and exit logic to the database connection. (@Rik079).
    • Added the ability to check EDSM coordinates to in-game systems. (@Rixxan).
    • HalpyBOT now provides an approximate cardinal direction during DIST, Landmark, or DSSA checks. (@Rixxan).
    • Added a check to ensure HalpyBOT won't force create new channels. (@Rik079).
    • Added the ability to email or text staff members in case of issues. (@Rixxan).

    Changed:

    • EDSMPing will no longer use cached results. (@Rixxan).
    • Fixed an issue with spacing on WHOAMI commands. (@Rixxan).
    • Fixed an error where some facts would not trim empty whitespace at the end of lines. (@Rixxan).
    • Fixed a typo in some documentation files. (@Rixxan).
    • Fixed an issue with forcing EDSM to ignore the bot cache. (@Rik079).
    • Reworked the Fact module for speed and stability. (@Rik079).
    • Moved the HalpyBOT client from the main to an isolated module. (@Rik079).
    • Reworked the Announcer module for API usage. (@Rik079).

    Removed:

    • Removed some duplicate Announer messages for cases. (@Rixxan).
    Source code(tar.gz)
    Source code(zip)
  • v1.3.1(Jan 1, 2023)

    A Hotfix to patch known bugs with HalpyBOT 1.3

    Changelog:

    Added:

    n/a

    Changed:

    • Fixed a bug with loading backup facts.
    • Fixed an issue with the DSSA command and PEMDAS
    • Fixed an issue with case announcement.

    Removed:

    n/a

    Source code(tar.gz)
    Source code(zip)
  • v1.3(Jan 1, 2023)

    The third major feature release, focusing on Quality of Life improvements for HalpyBOT and adding several requested tools and abilities.

    Changelog:

    Added:

    • Added EDSM CMDR and System Lookups.
    • Added EDSM CMDR and System Distance Calculations.
    • Added WHOAMI and WHOIS Seal User Information Request commands.
    • Added EDSM Landmark Lookup Calculations.
    • Added In-Game Year Lookup.
    • Added Current UTC Lookup.
    • Added Basic Bot Diagnostics Tools.
    • Added repeating announcement if bot in OFFLINE mode.
    • Added 5-minute cache to EDSM results.
    • EDSM System Check and Landmark System Firing automatically at case generation.
    • Added ability to set OFFLINE mode based on a command.
    • Added Nearest DSSA Lookup.

    Changed:

    • Fixed Trained Seal pings and Manual Case Firing.
    • Fixed an issue with EDSM responses being interpreted incorrectly.

    Removed:

    n/a

    Source code(tar.gz)
    Source code(zip)
  • 1.2.3(Jan 1, 2023)

    Hotfix to patch an issue where unauthorized users were able to use administrative commands.

    Changelog:

    Added:

    n/a

    Changed:

    • Fixed a design flaw that let the command handler bypass the user authentication system on most commands, thus allowing seals and unregistered users to use commands with a higher required authorization level than their own. We have no indications that this bug has been abused in the few days that it was present, and COOP has not been at risk.

    Removed:

    n/a

    Source code(tar.gz)
    Source code(zip)
  • 1.2.2(Jan 1, 2023)

    A hotfix designed to address an issue where the bot would lose connection to the database after extended operation.

    Changelog:

    Added:

    • Added "Offline Mode" status.

    Changed:

    • The database connection is refreshed every time a database-interacting command is run.
    • If the database cannot be connected to after 3 attempts, fall back to OFFLINE mode.

    Removed:

    n/a

    Source code(tar.gz)
    Source code(zip)
  • v1.2.0(Jan 1, 2023)

    Changelog:

    Added:

    • Added functionality for the Delayed Board.
    • Added a command registration decorator.
    • Added input validation checks and error handling to !forcejoin; it should now be working properly

    Changed:

    • All files with bot commands have been moved to src\commands, and all packages to src\packages
    • Fixed a bug where the fact cache could only be updated on bot startup
    • Fixed bug that prevented facts from being registered by the bot

    Removed:

    n/a

    Source code(tar.gz)
    Source code(zip)
  • 1.1(Jan 1, 2023)

    Changelog:

    Added:

    • Added the !wssPing command to ping the "Why So Sealious" role in Seal Discord for slow responses.
    • Added an offline archive for Facts in the event the main server is unreachable.
    • Added basic bot management commands.
    • Added a command to force a user to join certain channels.
    • Channel list used by the case announcer can now be edited from the config file.
    • Added reference citation where one was lacking.

    Changed:

    • Case Information will no longer be shouted out into Code Black.
    • Fixed an issue where an extra ) was output by some facts.
    • Commands are no longer case sensitive.

    Removed:

    • Removed some unneeded regex.
    Source code(tar.gz)
    Source code(zip)
  • 1.0(Jan 1, 2023)

    The first major release of HalpyBOT!

    This bot fills all operational needs for the Hull Seals IRC Assistant, including basic fact modules, case announcement, and basic bot management.

    More features coming soon!

    Source code(tar.gz)
    Source code(zip)
Owner
The Hull Seals
The Hull Seals
Algofi Python SDK is useful for developers who want to programatically interact with the Algofi lending protocol

algofi-py-sdk Algofi Python SDK Documentation https://algofi-py-sdk.readthedocs.

Algofi 41 Dec 15, 2022
Aplicação dos metodos de classificação em 3 diferentes banco de dados. Usando...

Machine Learning - Métodos de classificação Base de Dados utilizadas: Dados de crédito Dados do Census Métodos de classificação aplicados: Naive Bayes

1 Jan 18, 2022
This solution helps you deploy Data Lake Infrastructure on AWS using CDK Pipelines.

CDK Pipelines for Data Lake Infrastructure Deployment This solution helps you deploy data lake infrastructure on AWS using CDK Pipelines. This is base

AWS Samples 66 Nov 23, 2022
A Discord bot to play bluffing games like Dobbins or Bobbins

Usage: pip install -r requirements.txt python3 bot.py DISCORD_BOT_TOKEN Gameplay: All commands are case-insensitive, with trailing punctuation and spa

4 May 27, 2022
Deezer client for python

Deezer Python Client A friendly Python wrapper around the Deezer API. Installation The package is published on PyPI and can be installed by running: p

Bruno Alla 103 Dec 19, 2022
📷 An Instagram bot written in Python using Selenium on Google Chrome

📷 An Instagram bot written in Python using Selenium on Google Chrome. It will go through posts in hashtag(s) and like and comment on them.

anniedotexe 47 Dec 19, 2022
A working selfbot for discord

React Selfbot Yes, for real ⚠ "Maintained" version: https://github.com/AquaSelfBot/AquaSelfbot ⚠ Why am I making this open source? Because can't stop

3 Jan 25, 2022
This is a simple unofficial async Api-wrapper for tio.run

Async-Tio This is a simple unofficial async Api-wrapper for tio.run

Tom-the-Bomb 7 Oct 28, 2022
Fetching tweets and integrating it with Kafka and PySpark

KafkaPySpark Zookeeper bin/zookeeper-server-start.sh config/zookeeper.properties Kafka Server bin/kafka-server-start.sh config/server.properties Kafka

Priyansh 2 Dec 29, 2021
FTX auto lending bot with python

FTX auto lending bot Get the API key Check my article for step by step + screenshots Setup & Run Install python 3 Install dependency pip install -r re

Patompong Manprasatkul 1 Dec 24, 2021
A cross-platform script to book first available time for getting a passport in Sweden - Ett skript som automatiskt bokar pass hos polisen

Automatic passport booker - Boka pass automatiskt hos Svenska polisen A cross-platform script to book first available time for getting a passport in S

Elias Floreteng 14 Oct 17, 2022
Google Sheets Python API

Google Spreadsheets Python API v4 Simple interface for working with Google Sheets. Features: Open a spreadsheet by title, key or url. Read, write, and

Anton Burnashev 6.2k Dec 30, 2022
Telegram vc - A bot that can play music on telegram group's voice call

Telegram Voice Chat Bot A bot that can play music on telegram group's voice call

1 Jan 02, 2022
Set of classes and tools to communicate with a Noso wallet using NosoP

NosoPy Set of classes and tools to communicate with a Noso wallet using NosoP(Noso Protocol). The data that can be retrieved consist of: Node informat

Noso Project 1 Jan 10, 2022
Scripts to help you win the Pizza Express

Slice of the Prizes Slice of the Prizes is a Python Script designed to enter the "Slice of the Action" competition hosted by Pizza Express the competi

Luke Bendall 1 Nov 04, 2021
A library that allows you to easily mock out tests based on AWS infrastructure.

Moto - Mock AWS Services Install $ pip install moto[ec2,s3,all] In a nutshell Moto is a library that allows your tests to easily mock out AWS Services

Steve Pulec 6.5k Jan 02, 2023
A python script to send sms anonymously with SMS Gateway API. Works on command line terminal.

incognito-sms-sender A python script to send sms anonymously with SMS Gateway API. Works on command line terminal. Download and run script Go to API S

ʀᴇxɪɴᴀᴢᴏʀ 1 Oct 25, 2021
Python Client for MLflow Tracking Server

Python Client for MLflow Python client for MLflow REST API. Features: Unlike MLflow Tracking client all REST API methods are exposed to user. All clas

MTS 35 Dec 23, 2022
Purpose To make a cloudflare challenge pass successfully, Can be use cf_clearance bypassed by cloudflare

Purpose To make a cloudflare challenge pass successfully, Can be use cf_clearance bypassed by cloudflare, However, with the cf_clearance, make sure you use the same IP and UA as when you got it.

vvanglro 129 Jan 09, 2023
Versatile async-friendly library to retry failed operations with configurable backoff strategies

riprova riprova (meaning retry in Italian) is a small, general-purpose and versatile Python library that provides retry mechanisms with multiple backo

Tom 108 Apr 27, 2022