GithubHelp home page GithubHelp logo

astronomibot's People

Contributors

panzi avatar theastropath avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Forkers

panzi

astronomibot's Issues

Automatically make users regulars

The "Regulars" module should be able to detect if a person has shown up for some number of days of streams and automatically make them a regular

Countdown timer, CustomCmd replaceable string

It would be nice to be able to set up countdown timers that could be inserted into a CustomCmd. For example, I may want to have a countdown for a 24 hour stream, or a countdown to a release date of a game.

You should be able to configure multiple countdowns, and I see this working similarly to the Home Automation interface that I documented in a different issue. You would first create a countdown, then insert the replaceable string into a CustomCmd.

Something along the lines of:
!newcountdown

So for example:
!newcountdown 24HourStream 24:00:00
!addcom !24hrCountdown Time remaining in 24 hour stream is $COUNTDOWN(24HourStream)

running !24hrCountdown would return "Time remaining in 24 hour stream is 23:00:00" if an hour had passed since creating the countdown.

Allow for users to specify actual colour names to set the light colours

Currently users have to specify an exact RGB value to set the lights, by running:

!light

It would be good for users to be able to simply say any of these:

!light blue
!light green
!light purple
etc, etc....

The "webcolors" module is already imported in the Milight module to be able to support this. The command just needs to be improved such that it will accept a single string parameter, and if it is one of the webcolors, set the RGB values to the ones matching that colour automatically.

Collect all various credential and configuration files into one big ol' config.ini

I would like to simplify the configuration of Astronomibot, and I believe the best way to do that would be to have one configuration file where you would have something that looks like:

[Chat]
username = blah
chatAccessToken = OAuth asdf234123fa

[FTP]
ftpUrl = http://example.com
ftpUsername = astro
ftpPassword = fakepassword
ftpDirectory = /

[Twitter]
clientId = blarg
...
...
..

And so on.

This can be accomplished using the ConfigParser module included with Python.

Make voting commands extensible through config

It shouldn't be hardcoded as !gamevote and !randovote, you should be able to simply set up whatever vote tables you want in the config file.

Ideawise, I'm thinking you'd create a section called [GameVoteTable], like [GameVoteTableRando], and it would recognize that as you wanting to have a new votable table. The part after table would be taken as a (lower-case) keyword, which will get used in the "vote" file. The keyword would also be used for the voting command "!vote".

To maintain backwards compatibility, you'd need to create a [GameVoteTableGame] and [GameVoteTableRando]

Modules should fill in their default configs to the config file on initialization

During the initialization of each module, if any of its configuration isn't present in the config file, the module should enter the default values for those missing config options into the config structure. Once all the modules are loaded (and hence all values filled in), we should export the config file again. If any new modules get loaded during runtime, we should re-export the config again after the new module is initialized too.

Twitter Interface

A Twitter interface could be useful for some functionality, eg:

-Auto-tweet when stream is live
-Manual tweet with stream information

Alternately, this could be implemented through the Twitch "Status Updates" interface, since that can be used directly through the Twitch API an would require no additional information (Except greater scope on the Access Token for the API)

Modify MiLight module to be more generic

The MiLight module should just be a "light" module which can then accept various back-ends to control specific light types.

You should also be able to run multiple types of lights simultaneously, using different backends.

"Channel Live" Notifications

This would be a new Feature that would detect when the stream goes live and could post a message saying so in several possible ways:

-Tweet to a Twitter account
-Message to Discord Server
-Send an email (to a mailing list)

Tweeting to an account is likely the most important one, as that also enables SMS notifications through Twitters mobile notifications.

Walk user through first setup

When the user first downloads Astronomibot and runs it, it creates the config file and quits again, expecting you to fill it in yourself.

We should be able to add a step-by-step walkthrough to get your API keys and save them to your config, as well as some other basic settings. This would vastly improve the ease-of-use for a new user.

Custom API interface

Sometimes it would be nice to be able to have the bot turn a device on or off (Smoke machine? Popcorn maker?).

At its core, I see this as an interface where you would be able to make a call out to a URL and we would handle the response. In my case, with a Vera home automation system, you can access a URL that will trigger a scene. This means that you can set up the actual activity that should be happening within the realm of the home automation system, and merely trigger it from the bot.

The ideal way to implement this would likely be to have a configuration "command" that would result in replaceable strings that could be inserted into a regular CustomCmd. In other words:

  1. Create an HA Interface:
    !Automate create popcorn

This would make "popcorn" a triggerable string that could be used in a custom command

  1. Create a custom command that calls the triggerable string:
    !addcom !popcorn Time for popcorn! $AUTOMATE(popcorn)

  2. Run the command:
    !popcorn
    responds with: "Time for popcorn!"

When the command is run, it encounters the triggerable string, strips it from the response, and calls the URL associated with the string.

Scheduled Messages should be saved so that they persist through bot reboots

Currently you have to reschedule your message any time the bot happens to reboot (Which shouldn't be frequently, but could happen at any given time).

The scheduling information and state should be saved to a file when modifed.

For simplicity, the current time and number of messages between doesn't need to be saved, just the configured values for those.

Web Interface auto reload sometimes ends up reloading to blank white page

The web interface is set up to automatically reload such that new uploaded versions of the pages are loaded automatically and no effort is needed to keep the latest information visible (Useful for watching the chatters list, for example)

Unfortunately, sometimes the reload happens during the same period of time when the page is being uploaded, and we end up with a blank white page instead of new info. Surely there's a better way to reload the page to ensure we never get this? Ajax, or some sort of javascript improvement to the pages?

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.