MMM-Slack stop randomise messages
-
I am trying to get rid of the randomiser in MMM-Slack module. I want the messages to show in order from oldest to newest. I’m sure I’m approaching it the wrong way but I just can’t get it to work without the randomiser. Pls help!
-
if(this.slackMessages.length > 0) { var randomMessageId = Math.floor(Math.random() * this.slackMessages.length); var randomMessage = this.slackMessages[randomMessageId].message;
I want just ‘x’ instead of the ‘randomMessageId’ on the last line and can’t figure out how to do it.
-
Hi @saibam,
Just change:
var randomMessageId = Math.floor(Math.random() * this.slackMessages.length);
to the following:
var randomMessageId = 0;
It should work (unrandomizing the order), so long as the
slackMessages
array is in ascending order. If not, and it’s in descending order, set tothis.slackMessages.length - 1
instead of0
. -
@ninjabreadman thanks for the answer but this will only show the latest message. I solved it in a rather long but still nice way. The idea is to show the latest 10 messages and when a new message is sent it will show it instantly.
currentMessageCount and currentMessgeId are global variables instantiated to 0. emoji_replace is my own function to include emojis in the message.if (currentMessageCount < this.slackMessages.length || currentMessageCount == 0){ currentMessageId = 0; currentMessageCount = this.slackMessages.length; } var maxAllowed = 10; var topMessages = this.slackMessages.slice(0, (maxAllowed - 1)); var maxCount = Math.min(maxAllowed, topMessages.length); if (currentMessageId == maxCount - 1) { currentMessageId = 0; } var currentMessage = topMessages[currentMessageId].message; currentMessage = emoji_replace(currentMessage); messageElement.innerHTML = currentMessage; currentMessageId ++;
-
@saibam That sounds pretty good. I wanted to achive the same for the last 5 messages. So i would simpley exchange the 10 for a 5. But where do I have to put the code into ? In the mmm-slack.js ?
I would relay appreciate any help. -
@gekberlin Yes. Change maxAllowed to 5. Put it in MMM-Slack.js under the getDom: function() where it creates the html elements. I also noticed that it didnt work as expected where I had (maxCount -1) and (maxAllowed - 1). I removed the -1 and it worked like a charm.
-
@saibam Thanks for your fast reply!
I’ve put in the code but then I didn’t get any message displayed anymore.
Did I have done something wrong ?getDom: function() { var messageElement = document.createElement('div'); if (currentMessageCount < this.slackMessages.length || currentMessageCount == 0){ currentMessageId = 0; currentMessageCount = this.slackMessages.length; } var maxAllowed = 5; var topMessages = this.slackMessages.slice(0, (maxAllowed 0)); var maxCount = Math.min(maxAllowed, topMessages.length); if (currentMessageId == maxCount 0) { currentMessageId = 0; } var currentMessage = topMessages[currentMessageId].message; currentMessage = emoji_replace(currentMessage); messageElement.innerHTML = currentMessage; currentMessageId ++; } return messageElement; } });
-
@gekberlin Yes.
currentMessage = emoji_replace(currentMessage);
will not work as emoji_replace is my own function for replacing
with an emoji.
so just get rid of that line and it will work.And you will also have to instantiate currentMessageId and currentMessageCount globally. I.e.
var currentMessageId = 0 var currentMessageCount = 0
at the top of the js file.
-
@saibam Which Slack token do you use to connect to slack and do you have to put the leading # hash sign in the config file for the channel where it listens?
-
@mediathreat we followed the link in the readme https://api.slack.com/tokens and from there we created our own app. I’m sorry I can’t find where I found the token in there, you will have to try and error your way
I will keep looking some but can’t guarantee I find anything. Slack API pages are a mess imo. And no you don’t need the leading # in the config file.