wtfcarlos / rsvpbot Goto Github PK
View Code? Open in Web Editor NEWZulip RSVP for Humans
License: MIT License
Zulip RSVP for Humans
License: MIT License
When one has a list of n
people who rsvp yes
'd, and then you set the limit to m where m < n, there's no way of handling that scenario and the people just stay there.
Someone recently made an event in the politics
stream, which is opt-in. RSVPbot doesn't seem to have picked this up - there should be some way to ask RSVPbot to join another stream. Or maybe it should just subscribe to everything.
When setting up the next instance of a recurring event, a common idiom is rsvp cancel
+ rsvp init
. Maybe there could be an rsvp reinit
command that does both?
You should be able to PM rsvp bot to get your current agenda
RSVPBot should be able notify the attendees in some configurable amount of time.
It'd be great if RSVPBot would use something like dateparser to accept dates in a variety of formats.
I think if you use settings={'PREFER_DATES_FROM': 'future'}
, it'll even do the right thing if someone just sets the date to a string like "Tuesday".
Also maybe you can allow the time to be optionally set in the same command as the date, this way. I'm hoping input like "Tuesday at 2pm" works, but I haven't tested it.
It would be sick if RSVPbot was able to give me an iCal feed I could plug into my calendar so stuff automatically shows up when I rsvp yes
.
Related: #28
For instance, if an event doesn't have a date
set, it shouldn't be displayed on the rsvp summary
view
If a user does rsvp init
, they should be automatically in the YES list.
rsvp move https://recurse.zulipchat.com/#narrow/stream/RSVPs/topic/Security.20club.3A.20HTTPS.20pt.2E.201.2Foperational.20security
resulted in the event being moved to Security club: HTTPS pt. 1
instead of Security club: HTTPS pt. 1/operational security
Let's get with the times
When a user does rsvp yes
and there's no event associated with the Zulip thread, we should automatically and silently initialize an event in that thread. This helps to reduce spam, cognitive load, and lowers the learning curve of the bot a little bit.
Users should be able to optionally create an event privately with RSVPBot and then rsvp deploy
it to a stream/topic in order to reduce spam.
People are now using a dedicated RSVPs
stream to reduce the noise caused by people rsvp'ing.
I was thinking we could support this workflow in RSVPBot directly by re-purposing the init
command so that if it's ran outside of the RSVPs
stream, then it creates a new topic in the RSVPs
stream matching the original topic name, and posts a link to the RSVP thread in the original thread.
Thoughts?
(The use of a separate dedicated thread for RSVP events is pretty new, so I'm sure there's lots of kinks we still need to figure out with that new use case)
All them shizzle don't work son
For real
Not all events happen on one place. We need a way for RSVPBot to create events in arbitrary calendars
This needs to be done, PRONTO!
I was playing around with RSVPBot locally trying to learn about how it works when you PM it and found a way to crash the bot.
rsvp init
in a PM with RSVPBotrsvp move <any stream/topic>
Anyway, there are multiple ways to fix this, but it'll depend on the answer to that question.
Here's the traceback:
Traceback (most recent call last):
File "bot.py", line 108, in <module>
new_bot.main()
File "bot.py", line 83, in main
self.client.call_on_each_message(lambda msg: self.respond(msg))
File "/Users/alexwilson/.virtualenvs/rsvpbot/lib/python2.7/site-packages/zulip/__init__.py", line 308, in call_on_each_message
self.call_on_each_event(event_callback, ['message'])
File "/Users/alexwilson/.virtualenvs/rsvpbot/lib/python2.7/site-packages/zulip/__init__.py", line 301, in call_on_each_event
callback(event)
File "/Users/alexwilson/.virtualenvs/rsvpbot/lib/python2.7/site-packages/zulip/__init__.py", line 306, in event_callback
callback(event['message'])
File "bot.py", line 83, in <lambda>
self.client.call_on_each_message(lambda msg: self.respond(msg))
File "bot.py", line 63, in respond
self.send_message(reply)
File "bot.py", line 70, in send_message
msg_to = msg['sender_email']
KeyError: 'sender_email'
Try running the following string as a single chat message:
rsvp init
rsvp set date Thursday
rsvp set time 12:00
rsvp set duration 1:30
The bot replies privately with error messages. If we do rsvp init
separately and then run the rest of the commands in bulk:
rsvp set date Thursday
rsvp set time 12:00
rsvp set duration 1:30
RSVPBot behaves as expected.
I have just, for about the thousandth time, set up an event during a time which already had an event in the same room. It'd be neat if RSVPBot warned about this.
From Panashe:
Hey @carlos Rey (SP2'15) and others involved in this project, I think it would be really sweet if rsvp y was a command alias for rsvp yes. Being a lazy programmer, the less typing I can do the better!
STR:
rsvp init
on, say, the topic foobar
foobaz
rsvp ping
foobaz
is not an RSVPBot eventCurrently rsvp set description
requires all the description to be on a single line.
See an example of behaviour for current multiline descriptions here: https://zulip.com/#narrow/stream/RSVPs/subject/LIghtning.20talks.2C.20but.20just.20Paul
The bot just ignores the following lines even though they're part of the same message and should be part of the description.
Whenever I see an event date, I go back to the calendar to see what day of the week
the event is. It is useful to have day of the week
along with the event details.
Something like this will be useful
When 2016-11-16 @ 19:00
Where hopper
Day Wednesday
I am willing to send a PR.
New people often go like rsvp in
or rsvp out
, rsvp yass gawwd
and the list goes on and on. This only causes unnecessary spam
If someone says set time 3:00
, they probably don't mean 3am.
I'd suggest accepting times like (\d+)(:\d\d)?\s*(am|pm)?
, case insensitive. If the meridian marker (am/pm) is missing and the hour is less than, say, 8? then treat it as after noon.
If someone wants an early morning event, they can explicitly specify "AM". If they wrote "8:00" and expected it to be in the evening, they can use "8pm" to get what they wanted.
Hi, I'm one of the core developers for the Zulip project. We are interested in integrating this bot to the Zulip project and running it natively on the Zulip servers. It would require some minor restructuring of the code, so we may just fork it, or we may try to contribute patches.
If this idea interests you, please either reply here or find me on the public Zulip instance:
There's a list of contributors that should be migrated to a plaintext file. See an example of how it's done by looking at this part of the code
Instead of querying the zulip api every time rsvp ping
or rsvp summary
is used in order to figure what the display (aka "pingable") name is, RSVPBot should maintain its own mapping between display names and email addresses. This would be easy if RSVPBot is listening for events of type realm_user
, which are sent when a user's primary name is changed here.
The primary improvement here will be that we can create a dict and look users up by email/key, instead of iterating over an entire list of users.
rsvp enable autoping
command, RSVPBot should ping all participants 10 minutes before the event@ifo already implemented this feature, and it worked, but for some reason it got broken and we're not sure why.
Every event has an optional duration
attribute that should be displayed on the rsvp summary
response.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.