dblock / slack-sup Goto Github PK
View Code? Open in Web Editor NEWSlack bot that generates fresh triads of team members to meet every week in an informal standup, or S'Up.
Home Page: https://sup.playplay.io/
License: Other
Slack bot that generates fresh triads of team members to meet every week in an informal standup, or S'Up.
Home Page: https://sup.playplay.io/
License: Other
Fallout from #24
If you're logged into two calendars, you may get redirected to the wrong one after the gcal entry has been created.
When making groups it's ok to re-pair people that haven't actually met (submitted feedback that they have not been able to meet).
We set out to try S'Up before we would consider a subscription. Unfortunately, after the first week, S'Up only responded with "nil can't be coerced into Integer" to known commands:
For unknown commands, it's still friendly enough to say "I don't understand that command!":
Needless to say, but just to be sure: it also doesn't schedule triads anymore.
Allow opting in accounts that have is_restricted=true
or is_ultra_restricted=true
. Currently those are excluded.
There's no reason not to do 2 people or 4, except the mission of this bot. But the option is nice.
With nice buttons
Some teams want a sup every week (current implementation), others want it less frequently.
Set up a list of intros over Slack for a new hire during their onboarding period. Ideally to a group of people. A subset of #28
When you install S'Up it DMs slack admins with
Hi there! I'm your team's S'Up bot. Thanks for trying me out. Type
help
for instructions. I plan to setup some S'Ups via Slack DM next Monday.
Then, next Monday it sets up triads.
This seems underwhelming for an on-boarding experience, since you just sit and wait till Monday AM to get triads setup.
What else can you do?
This is something donut.ai does, instead of global opt-in, you join a channel and people are picked from that channel.
@sup suggest @dblock @orta talk about the weather
If these had met recently
@dblock and @orta met 3 days ago in a S'Up, are you sure you want to recommend they meet again?
[ yes ] [ no ]
DMs these two
Hey @dblock and @orta! @joe is suggesting you meet for 20 minutes and talk about the weather.
Once the status is updated, notifies the person who suggested the sup.
Thanks for letting me know, and thanks for suggesting this S'Up @dblock!
If the number of users doesn't divide by 3 someone will be left out. Web sup used to pair these together.
Another option is to add them to existing sup's, therefore creating sups of 4.
Currently manually running dokku run sup-bot rake cron:weekly
I got in a sup with someone from the UK (GMT) NYC (GMT + 5) and LA (GMT - 8) which is obviously bit tricky.
Maybe we can help let people know about a good time via by having sup pass a link like: https://www.timeanddate.com/worldclock/meetingtime.html?iso=20171106&p1=179&p2=136&p3=137
This way teams can have access to their own data.
People in different timezones have hard time meeting. Give an option to prevent that or optimize for those in the same timezone.
Designate a subteam on slack to have S'Up with. Via @jessicabackus
Failures in auth aren't properly reported. Need to direct people to popup questions and properly handle failures.
Currently rounds are run once a week, as soon as a week passed. At the very least we want to know on what day S'Ups are going to be created.
Set and use team timezone so that sup happens on the correct day of the week.
When a new DM is created, tell one person that they are in charge of setting up the calendar. Sort people in charge such as that you're not in charge all the time.
Provide summary information about sups to the teams.
Teams should be able to set the sup message and the reminder messages.
Probably connect to Google as explained in https://developers.google.com/google-apps/calendar/quickstart/ruby via a DM, then create a calendar item that people can edit themselves? Or a link where they can add themselves? Or a link to a page that uses gcal API to create a calendar item (https://developers.google.com/google-apps/calendar/quickstart/js)?
Without disabling a user in slack, allow admins to opt in/out someone.
cc: @orta, this is where we'd want team information in a custom field in slack
As a part of the “don’t show people with the same team” it could also remove people who don’t have a team at all.
Via @orta
If a DM was sent to a bunch of people, nudge them if there're no new messages in the channel.
Right now this just allows someone to override a tokenized cc value, which is annoying but harmless.
https://travis-ci.org/dblock/slack-sup/builds/266181097
1) Update cc with a stripe key a team with a stripe customer ID updates cc
Failure/Error: find('#update_cc', visible: false)
Capybara::ElementNotFound:
Unable to find css "#update_cc"
# ./vendor/bundle/ruby/2.4.0/gems/capybara-2.15.1/lib/capybara/node/finders.rb:313:in `block in synced_resolve'
# ./vendor/bundle/ruby/2.4.0/gems/capybara-2.15.1/lib/capybara/node/base.rb:85:in `synchronize'
# ./vendor/bundle/ruby/2.4.0/gems/capybara-2.15.1/lib/capybara/node/finders.rb:302:in `synced_resolve'
# ./vendor/bundle/ruby/2.4.0/gems/capybara-2.15.1/lib/capybara/node/finders.rb:37:in `find'
# ./vendor/bundle/ruby/2.4.0/gems/capybara-2.15.1/lib/capybara/session.rb:776:in `block (2 levels) in <class:Session>'
# ./vendor/bundle/ruby/2.4.0/gems/capybara-2.15.1/lib/capybara/dsl.rb:50:in `block (2 levels) in <module:DSL>'
# ./spec/integration/update_cc_spec.rb:37:in `block (4 levels) in <top (required)>'
# ./spec/support/database_cleaner.rb:15:in `block (3 levels) in <top (required)>'
# ./vendor/bundle/ruby/2.4.0/gems/database_cleaner-1.6.1/lib/database_cleaner/generic/base.rb:16:in `cleaning'
# ./vendor/bundle/ruby/2.4.0/gems/database_cleaner-1.6.1/lib/database_cleaner/base.rb:98:in `cleaning'
# ./vendor/bundle/ruby/2.4.0/gems/database_cleaner-1.6.1/lib/database_cleaner/configuration.rb:86:in `block (2 levels) in cleaning'
# ./vendor/bundle/ruby/2.4.0/gems/database_cleaner-1.6.1/lib/database_cleaner/configuration.rb:87:in `cleaning'
# ./spec/support/database_cleaner.rb:14:in `block (2 levels) in <top (required)>'
2) Update cc with a stripe key a team without a stripe customer ID displays error
Failure/Error: find('#update_cc', visible: false)
Capybara::ElementNotFound:
Unable to find css "#update_cc"
# ./vendor/bundle/ruby/2.4.0/gems/capybara-2.15.1/lib/capybara/node/finders.rb:313:in `block in synced_resolve'
# ./vendor/bundle/ruby/2.4.0/gems/capybara-2.15.1/lib/capybara/node/base.rb:85:in `synchronize'
# ./vendor/bundle/ruby/2.4.0/gems/capybara-2.15.1/lib/capybara/node/finders.rb:302:in `synced_resolve'
# ./vendor/bundle/ruby/2.4.0/gems/capybara-2.15.1/lib/capybara/node/finders.rb:37:in `find'
# ./vendor/bundle/ruby/2.4.0/gems/capybara-2.15.1/lib/capybara/session.rb:776:in `block (2 levels) in <class:Session>'
# ./vendor/bundle/ruby/2.4.0/gems/capybara-2.15.1/lib/capybara/dsl.rb:50:in `block (2 levels) in <module:DSL>'
# ./spec/integration/update_cc_spec.rb:57:in `block (4 levels) in <top (required)>'
# ./spec/support/database_cleaner.rb:15:in `block (3 levels) in <top (required)>'
# ./vendor/bundle/ruby/2.4.0/gems/database_cleaner-1.6.1/lib/database_cleaner/generic/base.rb:16:in `cleaning'
# ./vendor/bundle/ruby/2.4.0/gems/database_cleaner-1.6.1/lib/database_cleaner/base.rb:98:in `cleaning'
# ./vendor/bundle/ruby/2.4.0/gems/database_cleaner-1.6.1/lib/database_cleaner/configuration.rb:86:in `block (2 levels) in cleaning'
# ./vendor/bundle/ruby/2.4.0/gems/database_cleaner-1.6.1/lib/database_cleaner/configuration.rb:87:in `cleaning'
# ./spec/support/database_cleaner.rb:14:in `block (2 levels) in <top (required)>'
Works locally. Weird.
I got an ex-employee who still has an account but Slack classes as being inactive, might be in the API?
Recommended people meet next week instead of this week. Possibly more useful when Sup every other week.
Instead of A popup has been blocked by the browser. Please enable popups for GCal to work and reload this page.
, show a button that a user clicks.
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.