⭐ Vota y gana
Así crecen los bots en las listas grandes: tus usuarios votan cada 12 h a cambio de una recompensa, subes en el ranking semanal y más gente te descubre. En DisHub lo montas en 10 minutos.
Consigue tu token
Entra en la ficha de tu bot → 📊 Estadísticas → Para desarrolladores y genera tu token. Pon ahí también la URL de tu webhook.
Ir a mis botsDa la recompensa
Cuando alguien vota, avisamos a tu webhook con su ID de Discord al momento. Tú le das lo que quieras.
Pide el voto
Añade un comando /votar con el botón. Enlace corto para tu bot:
https://dishublist.com/votar/ID_DE_TU_BOT🎁 Ideas de recompensa
La más usada: +500 monedas por voto en bots de economía.
Desbloquea comandos premium hasta el siguiente voto.
Un rol en tu servidor de soporte durante 12 h.
Cada voto = una entrada al sorteo semanal.
💻 Código listo para copiar
discord.js
// npm i express
import express from "express";
const app = express();
app.use(express.json());
// Tu token de DisHub (📊 Estadísticas de tu bot → Para desarrolladores)
const DISHUB_TOKEN = process.env.DISHUB_TOKEN;
app.post("/dishub/votos", async (req, res) => {
// Comprueba que el aviso viene de DisHub
if (req.headers.authorization !== DISHUB_TOKEN) return res.sendStatus(401);
const { user } = req.body; // ID de Discord de quien ha votado
await darRecompensa(user); // 👈 tus monedas, XP, premium 12 h…
// Opcional: dale las gracias por MD
const u = await client.users.fetch(user).catch(() => null);
u?.send("¡Gracias por votar en DisHub! 🎁 Ya tienes tu recompensa.").catch(() => {});
res.sendStatus(200);
});
app.listen(3000);// /votar → botón para votar + comprueba si ya ha votado
import { ActionRowBuilder, ButtonBuilder, ButtonStyle, SlashCommandBuilder } from "discord.js";
export const data = new SlashCommandBuilder().setName("votar").setDescription("Vota por el bot y gana recompensas");
export async function execute(interaction) {
const res = await fetch(
`https://dishublist.com/api/v1/bots/${interaction.client.user.id}/votes/${interaction.user.id}`,
{ headers: { Authorization: process.env.DISHUB_TOKEN } },
).then((r) => r.json()).catch(() => ({}));
const boton = new ButtonBuilder()
.setLabel("Votar en DisHub")
.setEmoji("⭐")
.setStyle(ButtonStyle.Link)
.setURL(`https://dishublist.com/votar/${interaction.client.user.id}`);
await interaction.reply({
content: res.voted
? "✅ Ya has votado. Podrás volver a votar <t:" + Math.floor(new Date(res.nextVoteAt) / 1000) + ":R>."
: "⭐ Vota por el bot cada 12 h y gana recompensas:",
components: [new ActionRowBuilder().addComponents(boton)],
ephemeral: true,
});
}Python (discord.py)
# pip install aiohttp (con discord.py)
import os, discord
from aiohttp import web
DISHUB_TOKEN = os.environ["DISHUB_TOKEN"]
async def votos(request: web.Request):
if request.headers.get("Authorization") != DISHUB_TOKEN:
return web.Response(status=401)
data = await request.json()
user_id = int(data["user"]) # ID de Discord de quien ha votado
await dar_recompensa(user_id) # 👈 tu recompensa
return web.Response(status=200)
async def arrancar_webhook():
app = web.Application()
app.router.add_post("/dishub/votos", votos)
runner = web.AppRunner(app)
await runner.setup()
await web.TCPSite(runner, "0.0.0.0", 3000).start()
# Botón para tu comando /votar
class Votar(discord.ui.View):
def __init__(self, bot_id: int):
super().__init__()
self.add_item(discord.ui.Button(label="Votar en DisHub", emoji="⭐",
url=f"https://dishublist.com/votar/{bot_id}"))Lo que recibe tu webhook
POST https://tu-bot.com/dishub/votos
Authorization: <tu token de DisHub>
{
"type": "upvote",
"bot": "ID de tu bot",
"user": "ID de Discord de quien vota",
"username": "Pepe",
"url": "https://dishublist.com/bots/…",
"votedAt": "2026-11-12T18:00:00.000Z"
}🔔 Quien activa los recordatorios recibe un MD nuestro a las 12 h para volver a votar: más votos para ti sin hacer nada. ¿Más detalles? Documentación de la API.