Advertisement
Guest User

Untitled

a guest
Oct 19th, 2019
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const Discord = require("discord.js");
  2. const client = new Discord.Client();
  3. const request = require("request");
  4.  
  5. //Discord機器人Token
  6. const DISCORD_TOKEN = "你的DISCORD BOT TOKEN";
  7. //到Hypixel大廳打 /api new 取得
  8. const HYPIXEL_API = "adc1ea1e-62a9-4fc4-81e9-8de387fdf102";
  9.  
  10. const PREFIX = "ul!";
  11. const CMD = "guild";
  12. //狀態刷新秒數 不要設定低於0.5秒
  13. const TIME = 5;
  14.  
  15. client.on('ready', () => {
  16.   console.log("啟動成功");
  17. })
  18.  
  19. client.on('message', async msg => {
  20.   let args = msg.content.split(" ").slice(1);
  21.   if(msg.content.startsWith(PREFIX + CMD)) {
  22.     let sendingemb = new Discord.RichEmbed()
  23.       .setTitle("搜尋中...");
  24.     let sending = await msg.channel.send(sendingemb);
  25.     if(!args[0]) {
  26.         let noarg = new Discord.RichEmbed()
  27.           .setTitle("請輸入你的名字")
  28.           .setDescription(`範例\n\`${PREFIX}${CMD} LA_YEE\``);
  29.         return sending.edit(noarg);
  30.     }
  31.     request({method:'GET', url:`https://api.hypixel.net/player?key=${HYPIXEL_API}&name=${args[0]}`, json:true}, (err,res,data) => {
  32.         if(data.player == null) {
  33.           let error = new Discord.RichEmbed()
  34.             .setTitle("錯誤的名字")
  35.             .setDescription(`範例\n\`${PREFIX}${CMD} LA_YEE\``);
  36.             return sending.edit(error);
  37.         }
  38.         request({method:'GET', url:`https://api.hypixel.net/findGuild?key=${HYPIXEL_API}&byUuid=${data.player.uuid}`, json:true}, (err,res,data1) => {
  39.           if(!data1.success) {
  40.             let unkown = new Discord.RichEmbed()
  41.               .setTitle("未知的錯誤");
  42.             return sending.edit(unkown);
  43.           }
  44.           if(data1.guild == null) {
  45.             let nullerr = new Discord.RichEmbed()
  46.               .setTitle("錯誤")
  47.               .setDescription("該玩家沒有公會");
  48.             return sending.edit(nullerr);
  49.           }
  50.           request({method:'GET', url:`https://api.hypixel.net/guild?key=${HYPIXEL_API}&id=${data1.guild}`, json:true}, (err,res,data2) => {
  51.             if(!data2.success) {
  52.               let unkown1 = new Discord.RichEmbed()
  53.                 .setTitle("未知的錯誤");
  54.               return sending.edit(unkown1);
  55.             }
  56.             let successGuild = new Discord.RichEmbed()
  57.               successGuild.setTitle(`${data.player.displayname} 的公會資訊`)
  58.               successGuild.setColor(getRandomColor())
  59.               successGuild.addField("公會名稱", `\`${data2.guild.name}\``);
  60.             if(data2.guild.description != null) successGuild.addField("簡介", `\`${data2.guild.description}\``);
  61.              
  62.               if(data2.guild.tagColor != null) successGuild.addField("Tag/顏色", `\`${data2.guild.tag}/${data2.guild.tagColor}\``, true);
  63.               successGuild.addField("成員數量", `\`${data2.guild.members.length}\``, true)
  64.               successGuild.addField("在線玩家", `\`${data2.guild.achievements.ONLINE_PLAYERS}\``, true)
  65.               successGuild.addField("等級", `\`${Math.floor(getLevel(data2.guild.exp))}\``, true)
  66.               successGuild.addField("建立時間", `\`${convert(data2.guild.created)}\``, true)
  67.  
  68.               if(data2.guild.preferredGames != null) successGuild.addField("首選遊戲", `\`${data2.guild.preferredGames.join(",")}\``);
  69.               successGuild.setTimestamp();
  70.             sending.edit(successGuild)
  71.           })
  72.           setInterval(function(){
  73.           request({method:'GET', url:`https://api.hypixel.net/guild?key=${HYPIXEL_API}&id=${data1.guild}`, json:true}, (err,res,data2) => {
  74.             if(!data2.success) {
  75.               let unkown1 = new Discord.RichEmbed()
  76.                 .setTitle("未知的錯誤2");
  77.               return sending.edit(unkown1);
  78.             }
  79.             let successGuild = new Discord.RichEmbed()
  80.               successGuild.setTitle(`${data.player.displayname} 的公會資訊`)
  81.               successGuild.setColor(getRandomColor())
  82.               successGuild.addField("公會名稱", `\`${data2.guild.name}\``);
  83.             if(data2.guild.description != null) successGuild.addField("簡介", `\`${data2.guild.description}\``);
  84.  
  85.               if(data2.guild.tagColor != null) successGuild.addField("Tag/顏色", `\`${data2.guild.tag}/${data2.guild.tagColor}\``, true);
  86.               successGuild.addField("成員數量", `\`${data2.guild.members.length}\``, true)
  87.               successGuild.addField("在線玩家", `\`${data2.guild.achievements.ONLINE_PLAYERS}\``, true)
  88.               successGuild.addField("等級", `\`${Math.floor(getLevel(data2.guild.exp))}\``, true)
  89.               successGuild.addField("建立時間", `\`${convert(data2.guild.created)}\``, true)
  90.  
  91.               if(data2.guild.preferredGames != null) successGuild.addField("首選遊戲", `\`${data2.guild.preferredGames.join(",")}\``);
  92.               successGuild.setTimestamp();
  93.             sending.edit(successGuild)
  94.           })
  95.         }, TIME*1000);
  96. })
  97.     })
  98.   }
  99. })
  100.  
  101. function boolToString(bool) {
  102.   if(bool) {
  103.     return "是";
  104.   }
  105.   if(!bool) {
  106.     return "否";
  107.   }
  108. }
  109.  
  110. function getLevel(exp) {
  111.   const EXP_NEEDED = [
  112.     100000,
  113.     150000,
  114.     250000,
  115.     500000,
  116.     750000,
  117.     1000000,
  118.     1250000,
  119.     1500000,
  120.     2000000,
  121.     2500000,
  122.     2500000,
  123.     2500000,
  124.     2500000,
  125.     2500000,
  126.     3000000,
  127.   ];
  128.  
  129.   let level = 0;
  130.  
  131.   // Increments by one from zero to the level cap
  132.   for (let i = 0; i <= 100; i += 1) {
  133.     // need is the required exp to get to the next level
  134.     let need = 0;
  135.     if (i >= EXP_NEEDED.length) {
  136.       need = EXP_NEEDED[EXP_NEEDED.length - 1];
  137.     } else { need = EXP_NEEDED[i]; }
  138.  
  139.     // If the required exp to get to the next level isn't met returns
  140.     // the current level plus progress towards the next (unused exp/need)
  141.     // Otherwise increments the level and substracts the used exp from exp var
  142.     if ((exp - need) < 0) {
  143.       return Math.round((level + (exp / need)) * 100) / 100;
  144.     }
  145.     level += 1;
  146.     exp -= need;
  147.   }
  148.  
  149.   // Returns the level cap - currently 100
  150.   // If changed here, also change in for loop above
  151.   return 100;
  152. }
  153.  
  154. function getRandomColor() {
  155.   var letters = '0123456789ABCDEF';
  156.   var color = '#';
  157.   for (var i = 0; i < 6; i++) {
  158.     color += letters[Math.floor(Math.random() * 16)];
  159.   }
  160.   return color;
  161. }
  162.  
  163. function convert(unix){
  164. // Unixtimestamp
  165. var unixtimestamp = unix;
  166. // Months array
  167. var months_arr = ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月'];
  168. // Convert timestamp to milliseconds
  169. var date = new Date(unixtimestamp);
  170. // Year
  171. var year = date.getFullYear();
  172. // Month
  173. var month = months_arr[date.getMonth()];
  174. // Day
  175. var day = date.getDate();
  176. // Hours
  177. var hours = date.getHours();
  178. // Minutes
  179. var minutes = "0" + date.getMinutes();
  180. // Seconds
  181. var seconds = "0" + date.getSeconds();
  182. // Display date time in MM-dd-yyyy h:m:s format
  183. return `${year}年 ${month} ${day}日 ${hours}:${minutes.substr(-2)}:${seconds.substr(-2)}`;
  184. }
  185.  
  186. if(TIME < 0.5) {
  187.   console.error("時間不能設定低於0.5秒會超過Hypixel API限制");
  188. }
  189.  
  190. client.login(DISCORD_TOKEN);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement