Giter VIP home page Giter VIP logo

patch's People

Contributors

altsalt avatar andrewkvalheim avatar strugee avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

patch's Issues

Handle ratelimiting

We don't seem to do this properly. Snippet from my local logs against my homeserver:

2023-11-16T20:43:26.875-08:00 ๐Ÿ—„๏ธ Get state { room: 'SeaGL2023-Volunteering', type: 'org.seagl.patch.redirect', key: undefined }
2023-11-16T20:43:26.876-08:00 ๐Ÿ˜๏ธ Add to space { space: 'SeaGL2023-Information', child: 'SeaGL2023-InfoBooth' }
Rate limited: {"ms":4855}
2023-11-16T20:43:31.943-08:00 ๐Ÿ˜๏ธ Add to space { space: 'SeaGL2023-Information', child: 'SeaGL2023-BotHelp' }
Rate limited: {"ms":4768}
2023-11-16T20:43:37.024-08:00 ๐Ÿ˜๏ธ Add to space { space: 'SeaGL2023-Information', child: 'SeaGL2023-SpeakerHelp' }
Rate limited: {"ms":4697}
2023-11-16T20:43:42.041-08:00 ๐Ÿ˜๏ธ Add to space { space: 'SeaGL2023-Information', child: 'SeaGL2023-SponsorHelp' }
Rate limited: {"ms":4682}
2023-11-16T20:43:47.062-08:00 ๐Ÿ˜๏ธ Add to space { space: 'SeaGL2023-Information', child: 'SeaGL2023-Volunteering' }
Rate limited: {"ms":4667}
2023-11-16T20:43:51.952-08:00 ๐Ÿ”– Resolve tag { tag: 'seagl2023-restricted' }

Deal with E2E encryption/DMs somehow

From me on Matrix:

question: I just DM'd !help and then help to Patch. it created an E2E encrypted room, which I was not expecting to even work in the first place, but Patch marked both messages as read. however they didn't respond.
are we expecting this to work? should this work?

add command to ping a subset of folks in a room

Store a list of users who are regularly pinged together (e.g., active conference staff for a particular year). A stretch goal might be to have multiple potential lists (i.e., 2022, volunteers, etc.)

Help devs work around room creation ratelimiting

I'm trying to set up a Patch dev environment. After a bunch of initial activity, Patch will provision a room, print Wait before non-retryable API call: {"ms":10000}, sit there for a while, and then provision another room.

We should help contributors work around this behavior so they don't have to wait.

capture metrics

Have bot capturing metrics such as most active users, length of time users are in rooms, users in most rooms, etc.

Make staff `!tea` post to Twitter/Mastodon

I think it would be nice if, when conference staff !tea'd someone, Patch would syndicate that toast to social media. This would be a nice way to publicly shout out volunteers and would also have a nice side effect of generating more social media content for folks to engage with.

This should be opt-in because some of our community members may not want to be mentioned on social media. Here's the flow I'm imagining:

  1. A staff member uses !tea mentioning someone
  2. Patch posts the currently-existing response
  3. (New behavior from now on) Patch DMs the recipient and asks if they're ok with it going to socials too, and how to refer to them on socials (could be an @ username or just a plaintext name)
  4. User replies
  5. Socials get posted

We'd want to restrict this to staff members for security reasons. Non-staff !teas should use the existing behavior.

Add Q/A functionality

Include ability for people to !ask questions that puts them into a queue the room moderator may view.

Add bot goodies

Various FUNctionalities that have been often seen in irc bots beyond !tea

Create report command

Add functionality for attendees to !report bad behavior, consider whether some number of reports per timespan would automatically hide a message or remove voice from the sender.

Create main branch

Incorporate useful changes from 2021 branch to the initial draft example branch, clean-up and confirm that commands are functioning, then use this as the main branch to build upon.

add lockdown command

Create functionality to "lockdown" a room, which could have a variety of levels. One might be to remove voice from everyone, another might be to remove voice from everyone who joined the room in the past 5 minutes.

Build watcher

I just wasted like 30 minutes digging through code trying to figure out how to register commands. Turns out I just forgot to run yarn build.

A yarn watch would help with this.

Have one way and only one way to set command group

It's very hard to figure out how to set the command group from the code. Most commands do it explicitly, in start(). But !tea doesn't, and that happens to be the one I looked at for examples (because it's the simplest). !tea relies on this implicit default.

One of these ways should be killed. I think also in general it should probably be way more obvious how to add a new command... I'm struggling.

upgrade final staff rooms

all-hands and program haven't been upgraded yet, let's make sure that happens now that the conference is over. Probably fine to wait until after the retrospective.

Improve startup speed in dev

It takes a second or two to run yarn start because syncing room info is non-trivial. I should be able to set an option to cache a bunch of this info, or maybe avoid synchronization at startup at all, or something like that.

Refactor using sensible patterns

Much of the current code was written during the 2021 conference...

To get us to a point of being able to develop on a stable foundation, lets tidy up!

Here are a few suggestions that immediately come to mind:

  • Functions that are currently stand-alone should be separate imported modules.
  • Environment and common utilities should be separated out and imported for consistency.
  • Bot should remember state and stay running, versus being restarted to conduct new tasks.
  • Uptime/error monitoring should be integrated so we are notified when bot goes down.
  • etc. etc.

While not currently targeting Matrix, this project was suggested as following reasonable patterns.

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.