GithubHelp home page GithubHelp logo

kyle-undefined / poe-bot Goto Github PK

View Code? Open in Web Editor NEW
5.0 5.0 3.0 2.09 MB

A bot for the Path Of Exile Console Discord server, bringing PC-like features over to Consoles.

License: ISC License

C# 100.00%
c-sharp discord discord-bot discord-net dotnet dotnet-core ef-core entity-framework-core path-of-exile sqlite

poe-bot's People

Contributors

fuzzicallogic avatar kyle-undefined avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

poe-bot's Issues

Audit log data

Look into pulling info from the audit logs, either automatically or on demand. Make stats use audit log data for info like on bans and such

Extensions

Replace Nickname ?? Username with the user extension

Replace Avatar ?? DefaultAvatar with the user extension

Feature: Make RssService Timers configurable

With our most recent issue (which was not caused by functionality), it became clear that the bot needs a simple way to configure the timers for specific RSS Feed request intervals. Currently they are hardcoded, which means a code update/pull request to make any changes to the timers. Adding a configuration option would remove the need to update the code to perform a simple configuration change.

Embed enhancement

Look into replacing embeds with plain text where it makes sense

Make eval command an embed and have it show the code being evaled and result in code blocks, and use color for success/error and show compile time and such

Look into making commands embed look like gabybots or others
https://oof.is-my-life.style/Yb8BOs9r.png

EmbedBuilder#AddEmptyField extension created, just needs to be used

PoE Quotes

Simple quote command that has PoE quotes and chooses one randomly. Look into voice quotes as well.

Price check ticket system

create a ticket system for price checks:

Price checker ticketing system:

User enters price checker channel โ€œaโ€

Posts !pricecheck and links the item

Messages are only visible in this Chanel to their own poster

Bot reposts the message in price checker "working" channel (seperate channel only available to price checkers / mods / staff)

PC's discuss the price of a ticket item and come to a conclusion

PC types !price [ticket number] "message e.g we value your item at x price; etc values it at x price"

Bot sends a pm to the user; closes the ticket and says who initiated the !price command so the user knows who wrote the price up

Lotto Warden system

Create a fusing lottery system that requires Lottery Warden role. So what I'm thinking is a system that combines the price checker management, with shop usability. Maybe even a cases style system too. The lotto will be based on league and item and user tag and reward. Users will be able to enter into the lotto and give the LW the fusings to bet. LW needs to be able to manage who is in and the items and pretty much all data regarding lottos and
participants.

Look into it updating the lotto tag as well.

PoE Man

Create a command like tatsu "hackerman" command and see if it's based on madlib style or another

Tags

Look into mod+ being able to edit/delete tags and such

Update: Conform JobsService new FluentScheduler usage

FluentScheduler is deprecating several features soon, most notably dependency injection. Moving to the standard Registry => IJob usage will facilitate many of our future steps toward automated CI/CD and will allow a more portable and maintainable modularization of each Job and the JobsService, itself. Completion of this Issue will help and be helped by completion of #35 and its related Issues

trial command

make the trial command not be role based and make it store users for that trial per league they specify, so it pings the users themselves so we can have one lab channel instead of three

have to make a typereader for the trialname enum or think of a different approach of handling the trial name so it's not text based

Feature: RssService should have multiple timers

RSS Feeds are often auto-managed by a variety of entities, each with its own security policy based on request limits. Setting a specific time interval for all Feeds runs two potential risks:

  • The interval for one may violate the policy of another
  • In order to avoid the policy of one, you may increase the interval time but this can cause issues with timely updates for the more liberal services.

We recently ran into this problem with pathofexile.com, where our timer was too frequent, causing the IP of POE-Bot to be banned. Adding a timer to each Feed independently would allow the bot to keep timely on faster services, but conform to the restrictions of the others.

Remove Jobs from Services

This is a composite issue: There will be specific issues for each Job, so that they may be tracked as each is completed.

A service is/should be a set of functionality that is (typically openly) available for clients and consumers to use. In the circumstance of JobsService, it is combined with several other (current) services that are simply tasks performed at specific intervals. The list includes RssService, Leaderboards Service and StreamsService.

There is little reason to keep these available as a Service as they completely encapsulate their work process. In fact, they are more cleanly defined as Workers rather than Services. Redefining them as Workers, rather than Services will allow more SOLID architecture, cleaner instancing, lighter memory usage, and better reporting. It will also facilitate looser coupling, testing/mocking, and will allow event-based processing. Finally, it will accommodate issues similar to #30 and #31 much more easily.

Feature Request: Leaderboard URL should be a configuration setting

Path of Exile recently changed the naming/URL scheme of their Leaderboards, leaving our poor little bot in the lurch for the past league. A simple formattable (get-/set-)table configuration setting would allow us to make the necessary fix without having to modify otherwise stable code.

Process Jobs at job intialization

Currently, without a test framework, jobs with longer intervals require an inordinate amount of time to test. Even upon completion of implementation changes, the first job processing must wait until the interval has passed. To allow more immediate testing and use of improved implementations, the bot could run each job at its initialization. This allows more immediate testing until we can automate the tests, and more timely updates when functionality has changed.

Mutes don't report when a role id no longer exists

Just recently ran into a problem where mutes stopped working. The cause was not code-related, but rather that the Role previously associated with muting had a newly assigned Role ID. The bot failed requests to mute silently, even to the point that it stopped writing Mute Cases to the local data repository.

To fix this, a check should be added to the "mute" command. If it fails to result in a known Role, it should error and notify. Such a notification would have saved almost a month of downtime for this feature.

Price command change

make !price say something like "We have discontinued until further notice, sorry for the inconvenience."

PoE Wiki Cargo API

Change the Wiki scrape system to use the Cargo API instead so it's more accurate and better coded.

Fusing mini game

Look into adding a "fusing" game to the bot. Where they get it from being active in chat and can bet their fusing to see if they can 6l an item and if they do, it celebrates. A give fusings command that runs every x minutes that they can get fusings from the bot and has a leaderboard where it shows who's linked something in the lowest amount of fusings. "kuduku has blessed you with x fusings!" When getting fusings from bot. Add to profile how many fusings someone has and how many six links they have. Give them a random item that can be six linked with weapons and armor as the base and use the GGG odds for actually 6l. This item will be their item until it's 6l and then they get a new random item. Display this on leaderboard and profile as well. Look into showing the use of the fusing on the item and see progress on each fuse roll on the item. When checking the roll have it check which links are possible and permutations of that link is available and show that. From Tsulong#0943

Vaal mini game

Vaal game where people can use Vaal orbs on items and see what they get and say what mod a successful Vaal got. Make it be based on actual mods each base can get. Make it so you have to buy vaals using fusings.

Add gameification to the bot and other features

Add Welcome/Leave messages

Add a currency system

Add a leveling system for being active in the chat, which gives them currency

Add leaderboard for levels

Expand Profile system to include XP, Levels, Currency, etc

Add giveaway system

Add starboard, but look into naming it Vaal board or something

Set Styles and Conventions

This is going to be a long-term issue until we feel most of the baselines are covered in terms of Tokens and Patterns. This issue is made specifically to provide a forum for questions and discussion of the conventions and style used within PoE-Bot.

As of PR #34, there will be the beginnings of STYLE_GUIDE.md for contributors to our project to follow. To enable conformance, .editorconfig will help with editor behaviors specific to PoE-Bot and issue notices and warnings for failure to conform.

As such, each STYLE_GUIDE addition that requires any form or character or format conformance, will have a relevant change to .editorconfig.

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.