Coder Social home page Coder Social logo

calledtoconstruct / lambdabot Goto Github PK

View Code? Open in Web Editor NEW

This project forked from lambdabot/lambdabot

4.0 4.0 2.0 15.24 MB

A friendly IRC bot and apprentice coder, written in Haskell.

Shell 0.72% Haskell 91.92% Makefile 0.04% Nix 2.80% Dockerfile 0.18% HTML 3.37% CSS 0.98%

lambdabot's Introduction

Lambdabot: A friendly IRC bot and apprentice coder, written in Haskell.

Build Status

Lambdabot is an IRC bot written over several years by those on the #haskell IRC channel.

It operates as a command line tool, embedded in an editor, embedded in GHCi, via internet relay chat and on the web.

Prerequisites

Note: These are pre-installed by the devcontainer setup (where vscode devcontainer is used).

cabal install network happy
sudo apt -y install zlib1g-dev
sudo apt -y install libpcre2-dev libpcre3-dev
sudo apt -y install libghc-curl-dev

Create Template base on this project (Using nix)

In order to create a template for a new project base on this project you could run:

nix-build  -E 'with import <nixpkgs> {}; 
                     import "${fetchFromGitHub {
                            owner = "countoren";
                            repo = "lambdabot";
                            rev = "3c925a242f79f8d3dc47d779a6ca31e836837ece";
                            sha256 = "0yldd5s3l6pcimf1l6kdvd1g7l8lhcmylfv0q6fgazlpnca0z92v";
                        }}/nix/template.nix"' && ./result/bin/template-haskell;

lambdabot's People

Contributors

abbradar avatar adept avatar calledtoconstruct avatar cgibbard avatar chrisdone avatar countoren avatar dagit avatar dmhouse avatar donsbot avatar gwern avatar hansfbaier avatar int-e avatar jasoncreighton avatar kolmodin avatar kosmikus avatar mokus0 avatar mwotton avatar nomeata avatar peti avatar quchen avatar saizan avatar samb avatar sclv avatar shapr avatar skogsbaer avatar sorear avatar spencerjanssen avatar thjaeger avatar trofi avatar twanvl avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

lambdabot's Issues

Write initial unit tests.

Let's start with the plugins we've added recently. Twitch plugin, Suggest plugin, Todo plugin, Hangman plugin.

Thoughts?

Make Hangman more configurable

Allow the admin to configure the following settings:

  1. make "final answer" admin only or anyone or initiator
  2. make "start" admin only or anyone
  3. make game case sensitive or not

Implement Trivia game plugin

Questions and answers need to be pre-configured, or whispered when that feature is available. Privileged user starts the game, others respond, those who guess correctly get points when initiator progresses to the next question.

Implement channel override

Add ability to specify a channel override on a command such that adding :global :<name> to the end of the command keyword will cause that action to affect the State only for the specified scope if the plugin supports scoped commands.

Add ability to have super admin and channel specific admin roles.

nix-shell in the lambdabot folder

  • nix-shell in the lambdabot folder should immediately start an infinite loop of building and running the lambdabot (when it is shutdown, it will build and restart).

  • update readme.md in root folder to explain this usage.

Project name.

Since we intend on dramatically widening the scope of what lambda bot provides, should we rename our fork to something else?

nix-shell in root folder

nix-shell in root folder should create development environment with editor and plugins setup for Haskell with HIE, nix, and scripts to automate common processes (like calling cabal2nix when the cabal file changes).

Need to coordinate with countoren on #5

Implement Simon-Says game plugin

Someone initiates the game, they then say a word (can be an emoji), others try to match it, after some seconds, the initiator can send the next word, everyone tries to match, after X number of words, the game ends and people are rewarded based on their correct matches.

Summary of the content of a URL

Create plugin that listens for a command with a URL that will query that URL and attempt to extract a summary of the content of the page.

Team Emoji Spam Game

Create a plugin that allows a privileged user to start off a game (or auto-started on a timer) whereby chatters can form two or more teams that will battle for victory by spamming emoji in the chat. The bot should calculate the number and variety of emoji used by each team and each player. Points can be awarded to the winning team, and perhaps to the MVP of each team.

Pokemon game plugin

Implement a game where the plugin wakes up and says that a random pokemon character appeared. Each person in chat that types ?pokemon-catch has the opportunity to catch the character. However, the longer from the time it appears, the less likely you are to catch it. After 30 seconds, the pokemon gets away (if not caught). The person that catches the pokemon gains points.

Create request / queue plugin

Support:

request [queue name] [remove] value
request (promote | demote) [queue name] value
queue (pop | shuffle)
queue (create | delete | open | close) name [option list name]
option (create list | delete list) name
option (add | remove | disable | enable) name

For the request command, if only one queue exists, then the queue name is optional. The remove keyword is always optional, but items will always be added (see also, duplicate entries below) unless remove is specified.

Outstanding issue: how to handle duplicate entries? Perhaps the queue create command can take an argument indicating whether duplicates are allowed?

Emoji Story - adapted for twitch chat.

  1. Generate emoji string
    1.1. A random string of three emoji is produced.
  2. Writing
    2.1. Players write stories for the emoji string.
    2.2. Round ends within X seconds.
  3. Voting
    3.1 Players vote on the story they like the best.
    3.2 The story that has the most votes within 30 seconds wins. If stories tie for votes, then the game ends in a tie.

Repl.it Processor

Given a Repl.it URL, return the source as text. ( for the time being, we'll just work with single-file repl.it ).

Possible Uses

  • Programming contest where users submit their solutions in a Repl.it and they are evaluated by the bot.

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.