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(user, channel, params[]) { 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(UTF, sizeof(UTF), "%d", PlayersON); DCC_AddEmbedField(EmbedTest , "Jogadores", UTF, true);
//
if(msg_id != DCC_Message:0) { DCC_EditMessage(msg_id, UTF, EmbedTest); // a mensagem é editada, porém a Embed não. } else { DCC_SendChannelEmbedMessage(channel_test, EmbedTest); } return 1; }
public DCC_OnMessageCreate(DCC_Message:message) { if(!DCC_GetMessageChannel(message, channel_test)) return 0;
DCC_SetMessagePersistent(message, true); 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(user, channel, params[]) { 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(embedReply, string);
format(string, sizeof(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(channel, embedReply, "", "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(user, channel, params[]) { 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(embedReply, string);
format(string, sizeof(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(channel, embedReply, "", "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(user, channel, params[]) { 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(embedReply, string);
format(string, sizeof(string), "%d", players); DCC_AddEmbedField(embedReply, "Jogadores", string);
if(messageEdit != DCC_Message:0) { DCC_EditMessage(messageEdit, string, embedReply); // a mensagem é editada, porém a Embed não. } else { DCC_SendChannelEmbedMessage(channel, embedReply, "", "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(messageEdit, true); } return 1; }
![[Imagem: PLryyQ6.png]](https://i.imgur.com/PLryyQ6.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.
|