summaryrefslogblamecommitdiff
path: root/src/main/richpresence.ts
blob: 75acfdf5497ce6b400a9cc1826b391299402156a (plain) (tree)
1
2
3
4
5
6
                                  
                                                   

                                                              
 
                 



























                                                                     
 
                              
                                    
 
                                                                     
 
                                                 
 




                                           














                                                      


     
                                  







                                              
                                    
 

                                             

   

                                                 








                                           
 
                        
                          

                                                       
 
                                                
import { Status } from "./status";
// Only for testing as of right now -> Experimental
const ClientId = "551884486351126528";
const DiscordRPC = require("discord-rich-presence")(ClientId);

const slogans = [
  "free OpenSource 2D MMORPG",
  "Community made",
  "Join a Server or start your own",
];
const dataSet: {
  [key: string]: { name: string; logo: string; description: string };
} = {
  "server.tmw2.org": {
    name: "Moubootaur Legends",
    logo: "tmw2",
    description: "Playing on Moubootaur Legends ⎛tmw2.org⎠",
  },
  "world.evolonline.org": {
    name: "Evol Online",
    logo: "evol",
    description: "Playing on Evol Online ⎛evolonline.org⎠",
  },
  "server.themanaworld.org": {
    name: "The Mana World",
    logo: "tmw",
    description: "Playing on The Mana World ⎛themanaworld.org⎠",
  },
  noServer: {
    name: "Manaplus",
    logo: "manaplus",
    description: "Playing on any of the M+ servers",
  },
};

async function setActivity() {
  const status = Status.getStatus();

  const slogan = slogans[Math.floor(Math.random() * slogans.length)];

  const data = dataSet[status.gameStatus.server];

  const details =
    status.gameStatus.server === "Launcher"
      ? "in Launcher Menu"
      : `🎮 ${data.name} 🎮`;
  const logo = data && data.logo;

  DiscordRPC.updatePresence({
    state: ${slogan}«`,
    details,
    largeImageKey: logo,
    largeImageText: data && data.description,
    //smallImageKey: ,
    //smallImageText: 'string',
    //partyId: 'ae488379-351d-4a4f-ad32-2b9b01c91657',
    //partySize: 1,
    //partyMax: 999,
    //matchSecret: 'string',
    //joinSecret: 'string',
    //spectateSecret: 'string',
    //startTimestamp
  });
}

DiscordRPC.on("connected", () => {
  setActivity();

  // activity can only be set every 15 seconds
  setInterval(() => {
    setActivity();
  }, 15e3);
});

DiscordRPC.on("error", console.log);

DiscordRPC.on("join", (secret: string) => {
  console.log("we should join with", secret);
});

DiscordRPC.on("spectate", (secret: string) => {
  console.log("we should spectate with", secret);
});

// DiscordRPC.on('joinRequest', (user) => {
//   if (user.discriminator === '1337') {
//     DiscordRPC.reply(user, 'YES');
//   } else {
//     DiscordRPC.reply(user, 'IGNORE');
//   }
// });

export function quit() {
  DiscordRPC.disconnect();
  console.log("Shutting down Discord RPC integration");
}

process.on("unhandledRejection", console.error);