MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.

    MMM-Slack stop randomise messages

    Scheduled Pinned Locked Moved Troubleshooting
    14 Posts 4 Posters 9.0k Views 4 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • N Offline
      ninjabreadman @saibam
      last edited by

      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 to this.slackMessages.length - 1 instead of 0.

      Problem with config or JavaScript? Copy/paste it into JSHint.
      Check out the detailed walkthroughs on install, config, modules, etc.

      saibamS 1 Reply Last reply Reply Quote 0
      • saibamS Offline
        saibam @ninjabreadman
        last edited by saibam

        @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 ++;
        
        G 1 Reply Last reply Reply Quote 0
        • G Offline
          gekberlin @saibam
          last edited by

          @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.

          saibamS 1 Reply Last reply Reply Quote 0
          • saibamS Offline
            saibam @gekberlin
            last edited by

            @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.

            G 1 Reply Last reply Reply Quote 1
            • G Offline
              gekberlin @saibam
              last edited by

              @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;
              	}
              });
              
              
              saibamS 1 Reply Last reply Reply Quote 0
              • saibamS Offline
                saibam @gekberlin
                last edited by saibam

                @gekberlin Yes.

                currentMessage = emoji_replace(currentMessage);
                

                will not work as emoji_replace is my own function for replacing :smiley: 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.

                1 Reply Last reply Reply Quote 0
                • mediathreatM Offline
                  mediathreat @saibam
                  last edited by

                  @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?

                  saibamS 2 Replies Last reply Reply Quote 0
                  • saibamS Offline
                    saibam @mediathreat
                    last edited by

                    @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.

                    1 Reply Last reply Reply Quote 0
                    • saibamS Offline
                      saibam @mediathreat
                      last edited by

                      @mediathreat here is the correct link to create your token: https://api.slack.com/custom-integrations/legacy-tokens

                      mediathreatM 1 Reply Last reply Reply Quote 0
                      • mediathreatM Offline
                        mediathreat
                        last edited by

                        Thanks! This nailed it perfectly! Hopefully the MMM-SLACK package maintainer might add this info to be clearer. Now that I have it working, I wonder if I can go in and see if I can add showing photos from a slack channel to the code base

                        1 Reply Last reply Reply Quote 0
                        • mediathreatM Offline
                          mediathreat @saibam
                          last edited by

                          @saibam do you think its possible to modify the code to get images or links that are posted into the slack channel and display them on the magic mirror?

                          saibamS 1 Reply Last reply Reply Quote 0
                          • saibamS Offline
                            saibam @mediathreat
                            last edited by

                            @mediathreat I think it is possible, as long as the images have some kind of html address or similar, but I have no idea how to do it. I’ve moved on to other projects now :) almost finished an arcade cabinet :D

                            1 Reply Last reply Reply Quote 0

                            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                            With your input, this post could be even better 💗

                            Register Login
                            • 1 / 1
                            • First post
                              Last post
                            Enjoying MagicMirror? Please consider a donation!
                            MagicMirror created by Michael Teeuw.
                            Forum managed by Sam, technical setup by Karsten.
                            This forum is using NodeBB as its core | Contributors
                            Contact | Privacy Policy