Giter Site home page Giter Site logo

rdan's Introduction

rdan

rdan (Robot, Delightfully Assisting Nomic) is a small bot to help run a game of Nomic.

rdan's People

Contributors

samcoy3 avatar

Stargazers

Tomás Fernandes avatar Alex Dixon avatar

Watchers

 avatar  avatar

rdan's Issues

Serialised Game State

It would be nice to have some way to serialise the state of the game. Currently if the bot crashes this needs to be reconstructed.

Doesn't need to be fancy, just needs to serialise the current vote and the current scores, ideally after every interaction. It can then read this from disk on startup, if the file exists.

Inline rules and inline motions

The ability to type, for example, !r20 or !m20 inline would be convenient for referring to rules.

It would also be great if it could pull out and print more than one at once, for example

I think !r10 conflicts with !r11 here.

would print both the text of rule 10 and rule 11.

Serialised Config

rdan's config should be serialised in a YAML file and read on startup. This should contain the player names and IDs, the motion and rules channels, and the API token.

Timer functionality

rdan should allow users to set timers for events. For example, !timer 1h Make macaroni cheese will echo a message into the channel in which the message was sent, in one hour, saying "Make macaroni cheese". This could be used to remind players of the end of a nomination period, for example.

Dice Rolls

It would be great if the bot could interpret commands of the form !roll XdY.

The randomRIO function, and some simple parsing (or regular expressions) should be sufficient.

Post and amend rules

rdan should post and amend rules.

Using a command like !post 23 to transfer motion 23 to the rules channel, and !amend 23 <newtext> to amend rule 23 to the new text should be sufficient. A !repeal command might also be desirable, but messages can just be deleted.

Motion ownership

It would be nice if rdan could track who proposed a motion, such that only the author may amend a motion.

This would also make it unlikely for someone to overwrite some other motion by accident.

Desirable extra features:

  • multiple ownership, on the offchance that people wish to coauthor motions in the future
  • !motion claim number to add yourself as an owner of a motion

Special case "all" for votes

It may be convenient to have a special sentinel value all which can be passed in the following way

!endVote all

to end all ongoing votes.

Vote reminder

If a vote will complete soon (say, within 10 minutes), it would be convenient if rdan sent a PM to any players who had not yet voted on the motion to say that, if they are eligible, they should vote.

Parallelised Voting and Reaction Voting

Rdan should support multiple votes occurring simultaneously.

Votes will need to be recorded by reactions rather than by response messages in order to facilitate this.

Pausing and resuming voting periods

If votes may be timed, the ability to pause and resume ongoing vote timers may become useful.

The expected syntax would be

!pauseVote v15

to pause a particular vote, and

!resumeVote v15

to resume it.

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.