Coder Social home page Coder Social logo

devchatterbot's Introduction

Chat Bot and Stream Overlay

Platform: iOS

Getting StartedInstallingContributingContributorsLicense

Getting Started

This project is a place for us to have fun and build a chat bot together. It's currently just a console application, but later, we might add a GUI for local execution. I'm open to ideas about where we want to take this project. We could run it somewhere on the cloud, and we could decide that it needs a web interface. Let me know on-stream what you want to do.

Interested in joining a growing developer community? Connect with us on Discord! https://discord.gg/aQry9jG

Installing

These instructions will get you a copy of the devchatterbot up and running on your local machine for development and testing purposes.

Dependencies

Contributing

There are a few ways you can help, you can join us at DevChatter when we're streaming, you can report bugs or issues that you find, or you can suggest enhancements or changes.

Suggesting Enhancements

We are using GitHub Issues for our enhancement suggestions. Make sure to choose the correct label when creating the issue.

Bug Reporting

We are using GitHub Issues for our bug reports. Make sure to choose the correct label when creating the issue. Please include details of what you noticed as well as instructions for reproducing the issue. Please provide plenty of details to make it easier for us!

Sending Pull Requests

Details coming soon. Have I mentioned that you're awesome for even considering contributing to this project? Thanks!

Contributors

License

This project is licensed under the MIT License - see the LICENSE file for details

devchatterbot's People

Contributors

aridtag avatar asyncawake avatar benrick avatar brendanpluralsight avatar casrou avatar dcurtin avatar dpritchett avatar echostrike36 avatar jdphenix avatar jimbo8098 avatar kencamdk avatar kyledavi5 avatar lizzaran avatar mackiovello avatar mattstates avatar ristaloff avatar ryanlilla avatar sql-mistermagoo avatar summer600 avatar thebobonl 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  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  avatar  avatar  avatar  avatar

devchatterbot's Issues

Add global command cool down

Add a configurable cool down for a user to running commands. Fractional seconds for the global. We just don't want someone to spam commands in chat.

Add restart command

Wouldn't it be nice to tell the bot to restart ? only from command line
it needs to close itself, open another process to build the app, and then start it again

Allow Command Aliases

Allow commands to be used with multiple command words. Not required for SimpleCommands.

Display Timestamp on all Console Messages

We should display a timestamp for all messages sent to the ConsoleChatClient, so that we can see when they were sent. This would be similar to how timestamps are common in other chat clients, like Twitch and Discord.

As part of this, we should remove the timestamp from the IntervalTriggeredMessage.

Add Informational Logging (Depends on #16)

Once the #16 issue has been set up, we should have a way of logging. Using that, we want to have an Information setting, which will have the bot log additional information about its running processes.

Add Hangman Game

Add a hangman game.

!hangman - starts new game using a random word (from internal list or internet)
!hangman a ask if "a" is in the word
!hangman apple guesses the word is "apple"

Abstract out the concept of a JoinableGame

For example Rock paper scissors has the concept of people choosing to join the game.

We're going to create a Heist game as well, so that we can see what's consistent, extract it, and test that portion separate from the rest of the join-able games.

Add Heist Game to Bot

We should add a heist game that people can join in during chat.

**Commands: **
!heist - Starts or joins a heist, choosing a random role to assume.
!heist [role] - Starts or joins a heist, choosing a specific role to assume.

**Roles: **

  • Grifter (100)
  • Hacker (100)
  • Hitter (100)
  • Thief (200)
  • Tech (150)
  • Carrier (50)
  • Driver (50)

**Possible Heists: **
We should choose from a random set of heists, where each one needs different roles more than others.

  • Bank Robbery (Thief/Tech/Grifter, Driver, Carrier)
  • Mob Bank Robbery (Thief/Tech/Grifter, Hitter, Driver, Carrier)
  • Museum Heist (Thief/Grifter, Hacker, Carrier, Driver)
  • Jewelry Store (Grifter/Hacker, Driver, Carrier)

Add command cool down

Adjust the interface to allow any given command to be able to have a cool down set, so it's not run too often. This should be optional in some way.

For example, we might want !hangman to only be started once every 15 minutes.

Each Module Should Wire Up Self

Each module should be responsible for wiring itself up.
For example, the Twitch module should wire itself up.
When added, the Discord module should as well.

Add user cool down

The same user shouldn't be sending the same command repeatedly. We should assign a value on each command and configure defaults for this.

Connect to Discord

The bot should be able to connect to Discord in order to send Interval messages and handle commands.

Add Schedule Command

Add a !Schedule command to the bot to display the regular schedule of the stream.

Would be nice if it converted to a requested timezone.

We started this last stream, but may want to switch to nodatime if it can handle it better. It should support .net standard.

Add basic error logging

We should add basic error handling and logging. The bot should continue running in nearly all cases of Exceptions.

Exceptions while running a command, sending or receiving messages, or getting API information should not crash the bot. Each of these should be logged and the bot allowed to continue running.

Use Text Replacement Tokens for Most Commands

It would be nice if our commands had common text tokens that we could find in the response text.

Examples:

  • {{UserDisplayName}} - Name of the user who issued the command.
  • {{CommandName}} - This would be the command name itself.
  • {{Arg0}} - Usage Example: !so DevChatter would yield "DevChatter"
  • {{Arg1}} - Usage Example: !give Brendoneus 100 would yield "100"

New Followers Chat Announcement

Send message to corresponding chat announcing each new follower. Some of the relevant EventArgs pieces are set up but not completed for this.

Fix the hastily synchronized code

Around the code, while on stream, we've put in some hastily-made hacks in order to "get things working". We should clean those up instead of just synchronizing the async code we called.

Clean Up Dependency Injection

Our current "poor man's dependency injection" approach isn't going to cut it much longer, we should rework it to better manage resources.

Add Quiz Questions

Should ask the question, then prompt over a time interval giving hints until someone guesses correctly.

!quiz attempt to start a game
!quiz join join the quiz game
!quiz leave forfeit the game
!quiz [a|b|c|d] make your guess

Add Quoting System

Depends on #30 for long-term storage. Can be built without, but not very useful. Add a command to add quotes, mods can use. Allow anyone to retrieve quotes randomly or by number.

Set up actual database

Set up a database and have entity framework core use it. Try too keep it simple so local still works while allowing for future application changes.

Add a help command

Add a help command for info. Have all IBotCommands be able to respond with a short info message.

!help - Gives general help info
!help lurk - gives info about the lurk command

Allow users to pass coins to eachother

Create !give command to give your own coins to someone else.

Examples:
!give person 10
!give @person 10

Make sure this doesn't allow negatives, because WhatDoesTheCowThink, Magnus, wheelspin, and some other people like to mess with the bot.

Add Expected Command Arguments

Commands are triggered based on the CommandWord only. We should have expected arguments for commands. This would also mean that !so and !so DevChatter could be handled differently, since the former needs to do a random selection based on an API call and the latter does a simple text replacement.

Add in Achievements for Chatters/Viewers

For a long time we've been planning on having viewers and chatters be able to earn achievements through their participation in the stream. This will likely need some on-screen support, but we can start building it.

Customizable Command Words

Right now, command words are hardcoded into each command instance. Abstract away command word resolution, to allow support for globalization for command words and allowing users to add their own words to existing commands.

Thought about this looking at #96

!cmd

!cmd should be equivalent to !commands

Add IsEnabled property to IBotCommand

Should add an IsEnabled (or similar) property to IBotCommand so commands can be registered automatically while retaining the ability to turn specific commands off.

As mentioned on todays stream (2018-04-03)

(The readme mentions that you should make sure to assign the proper label but it looks like non maintainers are unable to do that. Should be flagged as enhancement probably)

Add an !Uptime command

We should have an !uptime command that will return the amount of time the stream as been live.

Leverage the TwitchLib.Api services for this. It should have TwitchLib.Api.Sections.Streams.V5.GetUptimeAsync(string channelId)

Add !streams command

Add !streams command that can be used to highlight other streams.

maybe if !so is used add that stream to the list that is displayed when !stream is called?

For DevChatter; for example, maybe other C# streams.

This may help to grow the c# community on twitch by promoting other C# streamers.

Console Application Should Wait for Input

Instead of our existing infinite loop, we should put the IntervalTriggeredMessages on their own thread, leaving the console application available to respond to user input. As part of this, we should set up an "exit" command to turn the bot off instead of requiring Ctrl + c as we do now.

Rock Paper Scissors Game

Make a game where everyone is prompted to play, costs "tokens" if lose and gains "tokens" if win. Will require "tokens" and database permanence.

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.