Created
March 11, 2021 15:19
-
-
Save jerodsanto/126132dd65a8fe07951ce1f1e365bdbe to your computer and use it in GitHub Desktop.
Deno/js code to pick 3 random winners from a channel using the Slack API
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// connect to the Slack API | |
let slack = "https://changelog.slack.com/api" | |
let token = Deno.env.get("SLACK_TOKEN") | |
let channel = "C1YNE3WUX" | |
let url = new URL(`${slack}/conversations.members`) | |
url.searchParams.set("token", token) | |
url.searchParams.set("channel", channel) | |
// get a list of members from the jsparty channel | |
let response = await fetch(url) | |
let json = await response.json() | |
let members = json.members | |
while (json.response_metadata.next_cursor) { | |
url.searchParams.set("cursor", json.response_metadata.next_cursor) | |
response = await fetch(url) | |
json = await response.json() | |
members = members.concat(json.members) | |
} | |
console.log(members.length) | |
// select 3 random people from that list | |
let luckies = members.sort((a, b) => 0.5 - Math.random()).slice(0, 3) | |
// resolve user names from ids | |
url = new URL(`${slack}/users.info`) | |
url.searchParams.set("token", token) | |
for (let i = 0; i < luckies.length; i++) { | |
url.searchParams.set("user", luckies[i]) | |
response = await fetch(url) | |
json = await response.json() | |
console.log(json.user.name) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Run with
deno run --allow-env --allow-net giveaway.js