Ir para conteúdo
Propaganda

Webhook com discord pelo servidor


Posts Recomendados

  • Administrador
4 minutos atrás, gutinha disse:

Opa, meu primeiro tópico aqui, provavelmente não vai estar bem formatado mas é isso.

 

Bora lá!

Oq eu vou trazer é um script simples pra integrar um webhook do discord no seu servidor. Assim você pode enviar mensagens pro discord pelo servidor, por ex: Fzr um log de ações (Tal staff criou tal item etc)

 

1° Passo: 

Instalar o ltn12:

No windows eu não testei, então quem usar ai vai ter q se virar 😅

No linux é simples, digite no terminal:

luarocks install --server=https://luarocks.org/dev ltn12

Caso ele não reconheça o luarocks, é bem simples de instalar, só seguir o get started aqui: 

This is the hidden content, please

Feito isso, agora vamos para a parte do servidor. Na pasta lib/ crie um arquivo chamado discord.lua e coloque o seguinte código:

  Mostrar conteúdo oculto
local http = require("socket.http")
local ltn12 = require("ltn12")

function sendDiscordEmbed(payloads)
    local webhookUrl = "UrlAqui"  -- Coloque a URL do seu webhook aqui

    local payload = {
        embeds = {
            payloads
        }
    }

    local headers = {
        ["Content-Type"] = "application/json"
    }

    local response_body = {}

    local res, code, response_headers = http.request{
        url = webhookUrl,
        method = "POST",
        headers = headers,
        source = ltn12.source.string(json.encode(payload)),
        sink = ltn12.sink.table(response_body)
    }

    if code ~= 200 and code ~= 204 then
        print("Erro ao enviar mensagem para o Discord. Código de status: " .. code)
    end    
end

 

 Feito isso já está funcionando, basta reiniciar o servidor e usar a função.

 

Vou deixar aqui um exemplo de uso bem simples.

Print de como ficaria:

image.png.defa0cd86ebbb587a36089e34f4c67d6.png

Código:

  Mostrar conteúdo oculto
local embed = {
title = getPlayerName(cid),
description = "Criou um " .. name .. " (Boost: " ..(t[2] and tonumber(t[2]) or 0) ..")",
color = 16774400
}
sendDiscordEmbed(embed)

Lembrando que o payload é dinâmico, então tem muito mais variáveis ai no meio. Pra quem quiser brincar e customizar, aqui tem um link do embed generator 

This is the hidden content, please
 ou 
This is the hidden content, please

 

 

Tópico aprovado, obrigado pela contribuição ❤️

Link para o comentário
Compartilhar em outros sites

HTTP/1.1 301 Moved Permanently
Erro ao enviar mensagem para o Discord. Código de status: 301

sigo recebendo esses erros.

Link para o comentário
Compartilhar em outros sites

  • Administrador
29 minutos atrás, Guest Icaro disse:

HTTP/1.1 301 Moved Permanently
Erro ao enviar mensagem para o Discord. Código de status: 301

sigo recebendo esses erros.

Seu link do webhook está correto? O envio do payload tá com as variáveis certas?

Link para o comentário
Compartilhar em outros sites

  • Administrador
6 minutos atrás, dso15 disse:

É possível enviar mensagem em chats ? Exemplo fulano capturou tal pokémon 

É sim, é só você usar o webhook no script de catch e configurar o webhook no discord pra enviar pro canal que você quer

Link para o comentário
Compartilhar em outros sites

  • 2 semanas atrás...

Resolvido: 

apt-get install luarocks

luarocks install luasec

local http = require("socket.http")
local ssl = require("ssl")
local ltn12 = require("ltn12")

webhookUrl = "https://..................................................................................................

_________________________________________________________________________________________________________

 

image.png.2ec32bddf4f27e9195497e3d1ca207d6.png

com o https: e com o http

image.thumb.png.6a22a6fd5229ad93056f7d97526b0be3.png

url: Removido hook removido tbm

tes tando com o 

This is the hidden content, please

image.thumb.png.8295784483041b0931103407a887a38c.png

  • Like 16
  • Thanks 3
Link para o comentário
Compartilhar em outros sites

lembrando que se vc põe ele pra fazer uma requisição http o servidor vai ficar esperando o destinatário responder a mensagem pra só então liberar o processamento do resto das coisas

com mt gente online ou com muitas requisições vc vai ver seu servidor começar a dar várias travadinhas de 1s que eh o tempo de resposta mais comum do webhook do discord

o recomendado eh fazer isso por uma aplicação fora do tfs

obrigado boa noite

  • Like 1
  • Thanks 1
Link para o comentário
Compartilhar em outros sites

  • 1 mês depois...

é possivel colocar a weebhook direto no script ? estou fazendo varias logs, e seria legal separar cada um em um chat separado... 

EXEMPLO:

 

local embed = {
title = getPlayerName(cid),
description = "Criou um " .. name .. " (Boost: " ..(t[2] and tonumber(t[2]) or 0) ..")",
color = 16774400
webhook = xxxxx
}
sendDiscordEmbed(embed)
Link para o comentário
Compartilhar em outros sites

18 horas atrás, Angel.php disse:

é possivel colocar a weebhook direto no script ? estou fazendo varias logs, e seria legal separar cada um em um chat separado... 

EXEMPLO:

 

local embed = {
title = getPlayerName(cid),
description = "Criou um " .. name .. " (Boost: " ..(t[2] and tonumber(t[2]) or 0) ..")",
color = 16774400
webhook = xxxxx
}
sendDiscordEmbed(embed)

Sim e possivel

vai na lib e altera para

Spoiler
function sendDiscordEmbed(payloads, webhookUrl)
    local payload = {
        embeds = {
            payloads
        }
    }

    local headers = {
        ["Content-Type"] = "application/json"
    }

    local response_body = {}

    local res, code, response_headers = http.request{
        url = webhookUrl,
        method = "POST",
        headers = headers,
        source = ltn12.source.string(json.encode(payload)),
        sink = ltn12.sink.table(response_body)
    }

    if code ~= 200 and code ~= 204 then
        print("Erro ao enviar mensagem para o Discord. Código de status: " .. code)
    end
end

 

 

Agora vai no script e faz assim

local webhookUrl = "url da hook"
local embed = {
title = getPlayerName(cid),
description = "Criou um " .. name .. " (Boost: " ..(t[2] and tonumber(t[2]) or 0) ..")",
color = 16774400
}
sendDiscordEmbed(embed, webhookUrl)

 

  • Like 1
Link para o comentário
Compartilhar em outros sites

6 horas atrás, JulianoZN disse:

Sim e possivel

vai na lib e altera para

  Ocultar conteúdo
function sendDiscordEmbed(payloads, webhookUrl)
    local payload = {
        embeds = {
            payloads
        }
    }

    local headers = {
        ["Content-Type"] = "application/json"
    }

    local response_body = {}

    local res, code, response_headers = http.request{
        url = webhookUrl,
        method = "POST",
        headers = headers,
        source = ltn12.source.string(json.encode(payload)),
        sink = ltn12.sink.table(response_body)
    }

    if code ~= 200 and code ~= 204 then
        print("Erro ao enviar mensagem para o Discord. Código de status: " .. code)
    end
end

 

 

Agora vai no script e faz assim

local webhookUrl = "url da hook"
local embed = {
title = getPlayerName(cid),
description = "Criou um " .. name .. " (Boost: " ..(t[2] and tonumber(t[2]) or 0) ..")",
color = 16774400
}
sendDiscordEmbed(embed, webhookUrl)

 



Funcionou <3, Agora outra duvida kkk eu criei no meu comando de createitem, porém em vez de aparecer o NOME do item, esta aparecendo o ID do item, consegue fazer pra puxar o nome do item? Se liga como esta
image.png.ca8ba5a85638feb48462f2d447fcb5ac.png


 

function onSay(cid, words, param, channel)
  if(param == '') then
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parametro de comando necessario")
    return true
  end
 
  local t = string.explode(param, ",")
  local ret = RETURNVALUE_NOERROR
  local pos = getCreaturePosition(cid)
 
  local id = tonumber(t[1])
  if(not id) then
    id = getItemIdByName(t[1], false)
    if(not id) then
      doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Item cujo nome não existe.")
      return true
    end
  end
 
  local amount = 100
  if(t[2]) then
    amount = t[2]
  end
 
  local item = doCreateItemEx(id, amount)
  if(t[3] and getBooleanFromString(t[3])) then
    if(t[4] and getBooleanFromString(t[4])) then
      pos = getCreatureLookPosition(cid)
    end
 
    ret = doTileAddItemEx(pos, item)
  else
    ret = doPlayerAddItemEx(cid, item, true)
 
    local webhookUrl = "https://discord.com/api/webhooks/1160059832850726912/vHRBId4bSSAdovgn0egmM1unAmAWR7apfzRtXgJk6Yoe0MPQIav5euda6J90LCFgTaAd"
    local embed = {
    title = getPlayerName(cid),
    description = "Criou um " .. amount .. "x " .. item .. ".",
    color = 16774400
    }
    sendDiscordEmbed(embed, webhookUrl)
  end
 
  if(ret ~= RETURNVALUE_NOERROR) then
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Nao foi possivel adicionar o item: " .. t[1])
    return true
  end
 
  doDecayItem(item)
  if(not isPlayerGhost(cid)) then
    doSendMagicEffect(pos, CONST_ME_MAGIC_RED)
  end
 
  return true
end
Link para o comentário
Compartilhar em outros sites

  • 5 meses depois...

Eu tinha configurado tudo certinho a uns 6 meses atras, porém nao dei continuidade no meu projeto. Hoje comprei uma maquina nova e instalei tudo novamente dnv, porém qnd to ligando o servidor ta dando esse erro:


Essa é a unica weebhook q coloquei pra ser gerada, é quando o servidor liga

image.png.f4549c4d678ebc510346e2966e9dbf9a.png


Ele funcionava assim: image.png.cbdc47d0abad0bcaaaf258ded0c89f95.png


sabe oq pode ser?

Link para o comentário
Compartilhar em outros sites

  • 2 semanas atrás...
Em 26/07/2023 em 12:18, gutinha disse:

Opa, meu primeiro tópico aqui, provavelmente não vai estar bem formatado mas é isso.

 

Bora lá!

Oq eu vou trazer é um script simples pra integrar um webhook do discord no seu servidor. Assim você pode enviar mensagens pro discord pelo servidor, por ex: Fzr um log de ações (Tal staff criou tal item etc)

 

1° Instalar o ltn12:

No windows eu não testei, então quem usar ai vai ter q se virar 😅

No linux é simples, digite no terminal:

luarocks install --server=https://luarocks.org/dev ltn12

Caso ele não reconheça o luarocks, é bem simples de instalar, só seguir o get started aqui: 

This is the hidden content, please

 

2° Criar o webhook no discord:

  Mostrar conteúdo oculto

Agora vamos no discord, no servidor em que você quer criar o webhook

Clique em Config. do servidor

image.png.5ea6b6115c6133be1fec4ff420ba0519.png

Depois em Integrações > Webhooks

image.png.83afd17577887e199eb909cb4b0a289e.png

Clique em novo webhook

image.png.297342711d28e0dd2b89ff7888f1ce38.png

Selecione o webhook criado

image.png.3092070110b8074a76b5452514081913.png

 

E aqui a gente copia o link e configura o webhook

image.png.2db5546ce34cec5bd1b50cf764310837.png

Salve o link porque vamos usar ele no próximo passo

 

Feito isso, agora vamos para a parte do servidor.

3° Criar o script:

Na pasta lib/ crie um arquivo chamado discord.lua e coloque o seguinte código:

  Mostrar conteúdo oculto
local http = require("socket.http")
local ltn12 = require("ltn12")

function sendDiscordEmbed(payloads)
    local webhookUrl = "UrlAqui"  -- Coloque a URL do seu webhook aqui

    local payload = {
        embeds = {
            payloads
        }
    }

    local headers = {
        ["Content-Type"] = "application/json"
    }

    local response_body = {}

    local res, code, response_headers = http.request{
        url = webhookUrl,
        method = "POST",
        headers = headers,
        source = ltn12.source.string(json.encode(payload)),
        sink = ltn12.sink.table(response_body)
    }

    if code ~= 200 and code ~= 204 then
        print("Erro ao enviar mensagem para o Discord. Código de status: " .. code)
    end    
end

 

 Feito isso já está funcionando, basta reiniciar o servidor e usar a função.

 

Vou deixar aqui um exemplo de uso bem simples.

Print de como ficaria:

image.png.defa0cd86ebbb587a36089e34f4c67d6.png

Código:

  Mostrar conteúdo oculto
local embed = {
title = getPlayerName(cid),
description = "Criou um " .. name .. " (Boost: " ..(t[2] and tonumber(t[2]) or 0) ..")",
color = 16774400
}
sendDiscordEmbed(embed)

Lembrando que o payload é dinâmico, então tem muito mais variáveis ai no meio. Pra quem quiser brincar e customizar, aqui tem um link do embed generator 

This is the hidden content, please
 ou 
This is the hidden content, please

Caso o seu script fique dando erro 301, siga esse passo a passo:

  Mostrar conteúdo oculto

Digite no terminal

luarocks install luasec

E no discord.lua adicione em baixo de local http = require("socket.http")

local ssl = require("ssl")

Feito isso, reinicie o servidor e tente novamente enviar a mensagem

 

⚠️atenção⚠️
Este tutorial é de autoria exclusiva do TibiaDevs e não autorizo sua publicação em nenhum outro fórum sem minha permissão. Caso desejem um tutorial semelhante em outro fórum, sugiro que o criem vocês mesmos. Respeitem o trabalho e esforço dedicados à criação deste conteúdo exclusivo.

 



é possivel gerar log geral do console? tudo que é feito é gerado do console aparecer em uma weebhoky? (Logico, qnd o server tiver online)

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois...

como é que envio uma mensagem no discord, para ser lida pelo servidor?

exemplo no discord
se eu escrever "event" (evento)


o servidor enviaria

/b evento?

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois...
Em 24/06/2024 em 08:13, Cesinhabd disse:

Alguém poderia me dar uma auxilio? Recompenso em R$

eu tenho um funcional so chamr

Link para o comentário
Compartilhar em outros sites

Participe da Conversa

Você pode postar agora e se cadastrar mais tarde. Cadastre-se Agora para publicar com Sua Conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.

×
  • Criar Novo...