Portal SAMP
[Ajuda] Discord-Connector não edita Embed ! - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Discord-Connector não edita Embed ! (/showthread.php?tid=4727)



Discord-Connector não edita Embed ! - sabio - 26/04/2024

Eu não tenho certeza, mas eu acho que não é possível editar Embed com esse plugin. Eu tentei de muitas formas, nenhuma funcionou... Se tiver outra forma, por favor me explique.

Código PHP:
#define DCC_CHANNEL_TEST         ("1233347627517481000")

new DCC_Channel:channel_test DCC_INVALID_CHANNEL;
new 
DCC_Message:msg_id DCC_Message:0;
new 
DCC_Embed:EmbedTest DCC_Embed:0;

public 
OnGameModeInit()
{
    channel_test DCC_FindChannelById(DCC_CHANNEL_TEST);
}

//comando teste que edita e cria a embed 

DCMD:test(userchannelparams[])
{
    
    
new UTF[144];

    
PlayersON += 10;

    
utf8encode(UTF"Servidor está online"sizeof UTF);

    

    
EmbedTest DCC_CreateEmbed("Servidor em Funcionamento"UTF, .color=2031360); //sim, a embed é criada a cada chamada, eu tentei mudar mas não funcionou.

    
format(UTFsizeof(UTF), "%d"PlayersON);
    
DCC_AddEmbedField(EmbedTest "Jogadores"UTFtrue);

        


    
// 

    
if(msg_id != DCC_Message:0)
    {    
        
DCC_EditMessage(msg_idUTFEmbedTest); // a mensagem é editada, porém a Embed não.
    
}
    else
    {
        
DCC_SendChannelEmbedMessage(channel_testEmbedTest);
    }
        
    return 1;
}

public 
DCC_OnMessageCreate(DCC_Message:message)
{
    if(!DCC_GetMessageChannel(messagechannel_test))
        return 0;

    DCC_SetMessagePersistent(messagetrue);
    msg_id message;
    
    return 1;




RE: Discord-Connector não edita Embed ! - Carlos Victor - 27/04/2024

Você teria que passar uma callback para retornar o ID dessa mensagem, como no exemplo que fiz abaixo:
Código PHP:
new DCC_Message:messageEdit DCC_Message:0;
new 
DCC_Embed:embedReply DCC_Embed:0;

DCMD:test(userchannelparams[])
{
    new 
string[148], players random(30); // Esse players é só para teste.

    
utf8encode(string"O servidor está online.");
    
embedReply DCC_CreateEmbed();    
    
    
DCC_SetEmbedTitle(embedReply"Embed Reply");
    
DCC_SetEmbedDescription(embedReplystring);

    
format(stringsizeof(string), "%d"players);
    
DCC_AddEmbedField(embedReply"Jogadores"string);

    if(
messageEdit != DCC_Message:0) {    
        
DCC_EditMessage(messageEdit""embedReply); // a mensagem é editada, porém a Embed não.
    
}
    else {
        
DCC_SendChannelEmbedMessage(channelembedReply"""DCC_EmbedReturnID");
    }
    return 
1;
}

forward DCC_EmbedReturnID();
public 
DCC_EmbedReturnID()
{
    
messageEdit DCC_GetCreatedMessage();

    if (
messageEdit == DCC_Message:0) {
        
// deu erro, tenta repetir o envio da mensagem, as vezes o discord buga
    
} else {
        
// deu tudo certo, a variável 'messageEdit' armazena o "ID" da mensagem.
    
}
    return 
1;

Se quiser só pega e edita pro seu gamemode, mas eu acredito que a base seja essa, tem um tempo que eu não mexo com o dcc.


RE: Discord-Connector não edita Embed ! - sabio - 27/04/2024

(27/04/2024 00:13)Carlos Victor Escreveu: Você teria que passar uma callback para retornar o ID dessa mensagem, como no exemplo que fiz abaixo:
Código PHP:
new DCC_Message:messageEdit DCC_Message:0;
new 
DCC_Embed:embedReply DCC_Embed:0;

DCMD:test(userchannelparams[])
{
    new 
string[148], players random(30); // Esse players é só para teste.

    
utf8encode(string"O servidor está online.");
    
embedReply DCC_CreateEmbed();    
    
    
DCC_SetEmbedTitle(embedReply"Embed Reply");
    
DCC_SetEmbedDescription(embedReplystring);

    
format(stringsizeof(string), "%d"players);
    DCC_AddEmbedField(embedReply"Jogadores"string);

    if(
messageEdit != DCC_Message:0) {    
        DCC_EditMessage
(messageEdit""embedReply); // a mensagem é editada, porém a Embed não.
    }
    else {
        DCC_SendChannelEmbedMessage(channelembedReply"""DCC_EmbedReturnID");
    }
    return 1;
}

forward DCC_EmbedReturnID();
public 
DCC_EmbedReturnID()
{
    
messageEdit DCC_GetCreatedMessage();

    if (
messageEdit == DCC_Message:0) {
        
// deu erro, tenta repetir o envio da mensagem, as vezes o discord buga
    
} else {
        
// deu tudo certo, a variável 'messageEdit' armazena o "ID" da mensagem.
    
}
    return 
1;

Se quiser só pega e edita pro seu gamemode, mas eu acredito que a base seja essa, tem um tempo que eu não mexo com o dcc.

Já testei desta forma antes, a Embed não é editada, somente é  editado o conteúdo da mensagem em si... 

Acho que vou ter que esperar o autor do plugin lançar uma função nova como um DCC_EditEmbed ou semelhante.

Código PHP:
DCMD:test(userchannelparams[])
{
    new string[148], players random(30); // Esse players é só para teste.

    utf8encode(string"O servidor esta online.");
    embedReply DCC_CreateEmbed();    
    
    DCC_SetEmbedTitle
(embedReply"Embed Reply");
    DCC_SetEmbedDescription(embedReplystring);

    format(stringsizeof(string), "%d"players);
    DCC_AddEmbedField(embedReply"Jogadores"string);

    if(messageEdit != DCC_Message:0) {    
        DCC_EditMessage
(messageEditstringembedReply); // a mensagem é editada, porém a Embed não.
    }
    else {
        DCC_SendChannelEmbedMessage(channelembedReply"""DCC_EmbedReturnID");
    }
    return 1;
}

forward DCC_EmbedReturnID();
public 
DCC_EmbedReturnID()
{
    messageEdit DCC_GetCreatedMessage();

    if (messageEdit == DCC_Message:0) {
        // deu erro, tenta repetir o envio da mensagem, as vezes o discord buga
        
DCC_SendChannelEmbedMessage(DCC_FindChannelById("1233347627517481000"), embedReply"""DCC_EmbedReturnID");
    } else {
        // deu tudo certo, a variável 'messageEdit' armazena o "ID" da mensagem.
        
DCC_SetMessagePersistent(messageEdittrue);
    }
    return 1;



[Imagem: PLryyQ6.png]
[Imagem: boVANhj.png]


RE: Discord-Connector não edita Embed ! - Carlos Victor - 27/04/2024

Iremos morrer e o Discord-connector não será atualizado, acredito que desistiram dele. Mas eu tenho certeza que dá sim para editar embed, me chama no Discord que iremos resolver essa fita. É que tem um tempo que eu não mexo com o dcc, mas vou instalar aqui e fazer os testes pra ti.


RE: Discord-Connector não edita Embed ! - sabio - 27/04/2024

(27/04/2024 11:29)Carlos Victor Escreveu: Iremos morrer e o Discord-connector não será atualizado, acredito que desistiram dele. Mas eu tenho certeza que dá sim para editar embed, me chama no Discord que iremos resolver essa fita. É que tem um tempo que eu não mexo com o dcc, mas vou instalar aqui e fazer os testes pra ti.

Mandei lá, meu discord é sabio_scripter


RE: Discord-Connector não edita Embed ! - xbruno1000x - 28/04/2024

Citar:Acho que vou ter que esperar o autor do plugin lançar uma função nova como um DCC_EditEmbed ou semelhante.

Eu até havia comentado sobre isso aqui no tópico mas apaguei e deixei alguém com mais conhecimento falar sobre. Acredito que o problema seja esse, pois se você olhar o plugin só existe a função de excluir uma embed, adicionar uma embed ou procurar uma embed pelo id. Além disso, se você for no arquivo Message, vai ver o trecho abaixo:

Código:
EmbedManager::Get()->DeleteEmbed(embedid);
Imagino que isso esteja deletando a embed e mandando apenas uma mensagem editada.


Pra resolver esse problema, acredito que dependa da boa vontade da comunidade ou do criador em corrigir o código desse plugin.