mirror of
https://github.com/SrIzan10/vinci.git
synced 2026-06-06 01:07:00 +00:00
feat: minecraft server status
This commit is contained in:
15
commands/handlers/mcping-players.ts
Normal file
15
commands/handlers/mcping-players.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import { commandModule, CommandType } from '@sern/handler';
|
||||
import axios from 'axios';
|
||||
|
||||
export default commandModule({
|
||||
type: CommandType.Button,
|
||||
plugins: [],
|
||||
execute: async (ctx) => {
|
||||
await ctx.deferReply({ ephemeral: true })
|
||||
const request = await axios.get('https://api.minetools.eu/query/minecraft.maraturing.com/25565').then(res => res.data)
|
||||
|
||||
await ctx.editReply({
|
||||
content: ``
|
||||
})
|
||||
},
|
||||
});
|
||||
7
index.ts
7
index.ts
@@ -57,6 +57,7 @@ Sern.init({
|
||||
|
||||
client.on('ready', async () => {
|
||||
console.log('Logged on!');
|
||||
|
||||
setInterval(() => {
|
||||
const statuses = [
|
||||
{ name: 'Minecraft', type: ActivityType.Playing },
|
||||
@@ -87,7 +88,11 @@ client.on('ready', async () => {
|
||||
|
||||
setIntervalAsync(async () => {
|
||||
await minecraftstatus(client);
|
||||
}, 30_000);
|
||||
}, 20_000);
|
||||
|
||||
setIntervalAsync(async () => {
|
||||
await minecraftstatus(client);
|
||||
}, 20_000);
|
||||
|
||||
webserver()
|
||||
} else {
|
||||
|
||||
@@ -1,5 +1,47 @@
|
||||
import { Client } from "discord.js";
|
||||
import { Client, ColorResolvable, EmbedBuilder, Message, TextChannel } from "discord.js";
|
||||
import axios from 'axios'
|
||||
import dayjs from "dayjs";
|
||||
import timezone from 'dayjs/plugin/timezone.js'
|
||||
import utc from 'dayjs/plugin/utc.js'
|
||||
|
||||
export default async function minecraftstatus(client: Client) {
|
||||
dayjs.extend(utc)
|
||||
dayjs.extend(timezone)
|
||||
|
||||
const request = await axios.get('https://api.minetools.eu/ping/minecraft.maraturing.com/25565').then(res => res.data)
|
||||
const fetchMsg = await (await client.channels.fetch('1063944267258662922')! as TextChannel).messages.fetch('1063950406474010674') as Message
|
||||
|
||||
let onlineorelse: string
|
||||
let colorcode: ColorResolvable
|
||||
if (request.error) {
|
||||
onlineorelse = 'Offline'
|
||||
colorcode = '#8B0000'
|
||||
} else {
|
||||
onlineorelse = 'Online'
|
||||
colorcode = 'Green'
|
||||
}
|
||||
|
||||
let embed = new EmbedBuilder()
|
||||
.setThumbnail('https://api.minetools.eu/favicon/minecraft.maraturing.com/25565')
|
||||
.setColor(colorcode)
|
||||
.setTitle('Estado del servidor')
|
||||
.setFooter({ text: `Última actualización: ${dayjs().tz('Europe/Madrid').format('DD/MM/YYYY HH:mm:ss')}` })
|
||||
|
||||
if (onlineorelse === 'Offline') {
|
||||
embed = embed.setFields(
|
||||
{ name: 'Estado', value: onlineorelse, inline: true }
|
||||
)
|
||||
} else {
|
||||
embed = embed.setFields(
|
||||
{ name: 'Estado', value: onlineorelse, inline: true },
|
||||
{ name: 'Ping', value: parseInt(request.latency.toString()).toString(), inline: true },
|
||||
{ name: '\u200B', value: '\u200B', inline: true },
|
||||
{ name: 'Jugadores online', value: request.players.online.toString(), inline: true },
|
||||
{ name: 'Jugadores máximos', value: request.players.max.toString(), inline: true },
|
||||
)
|
||||
}
|
||||
await fetchMsg.edit({
|
||||
content: '',
|
||||
embeds: [embed]
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user