Coffee Bot (Mattermost)
Automated workflow: Coffee Bot (Mattermost). This workflow processes data and performs automated tasks.
Integrations Used (3)
Prerequisites
Required Credentials (2)
Complexity
Advanced features used. Requires n8n experience.
When to Use This Workflow
Streamline Team Communication
Automatically route notifications and updates to the right channels and people.
Reduce information overload while keeping everyone informed.
Scheduled Operations
Run automated tasks at specific times - daily reports, weekly cleanups, monthly backups.
Set it and forget it - reliable automation that runs on your schedule.
Error Reduction
Eliminate human error from routine processes with consistent automation.
Improve accuracy and reliability across your workflows.
{
"id": "7",
"name": "Coffee Bot (Mattermost)",
"nodes": [
{
"name": "Divide into groups",
"type": "n8n-nodes-base.function",
"position": [
1060,
300
],
"parameters": {
"functionCode": "const ideal_group_size = 3;\nlet groups = [];\nlet data_as_array = [];\nlet newItems = [];\n\n// Take all the users and add them to an array\nfor (let j = 0; j < items.length; j++) {\n data_as_array.push({username: items[j].json.username, email: items[j].json.email});\n}\n\n// Fisher-Yates (aka Knuth) Shuffle\nfunction shuffle(array) {\n var currentIndex = array.length, temporaryValue, randomIndex;\n\n // While there remain elements to shuffle...\n while (0 !== currentIndex) {\n\n // Pick a remaining element...\n randomIndex = Math.floor(Math.random() * currentIndex);\n currentIndex -= 1;\n\n // And swap it with the current element.\n temporaryValue = array[currentIndex];\n array[currentIndex] = array[randomIndex];\n array[randomIndex] = temporaryValue;\n }\n\n return array;\n}\n\n// Randomize the sequence of names in the array\ndata_as_array = shuffle(data_as_array);\n\n// Create groups of ideal group size (3)\nfor (let i = 0; i < data_as_array.length; i += ideal_group_size) {\n groups.push(data_as_array.slice(i, i + ideal_group_size));\n}\n\n// Make sure that no group has just one person. If it does, take\n// one from previous group and add it to that group \nfor (let k = 0; k < groups.length; k++) {\n if (groups[k].length === 1) {\n groups[k].push(groups[k-1].shift());\n }\n}\n\nfor (let l = 0; l < groups.length; l++) {\n newItems.push({json: {groupsUsername: groups[l].map(a=> a.username), groupsEmail: groups[l].map(b=> b.email)}})\n}\n\nreturn newItems;"
},
"typeVersion": 1,
"id": "583411a8-d287-4592-81af-5e174eea887c",
"notes": "This function node performs automated tasks as part of the workflow."
},
{
"name": "Greetings",
...Related Workflows
Typeformtrigger Workflow
Automated workflow: Typeformtrigger Workflow. This workflow processes data and performs automated tasks.
Send financial metrics monthly to Mattermost
Automated workflow: Send financial metrics monthly to Mattermost. This workflow processes data and performs automated ta...
Cron Workflow
Automated workflow: Cron Workflow. This workflow processes data and performs automated tasks.
cheems
Automated workflow: cheems. This workflow processes data and performs automated tasks.
Production Workflow
Production-ready workflow: Production Workflow. This workflow has been optimized for production use with comprehensive e...
Website check
Production-ready workflow: Website check. This workflow has been optimized for production use with comprehensive error h...