This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Вопрос Система репорта

Eminem_1106

Новый участник
18 Июн 2023
24
3
47
Добрый вечер (или ночь)!

Возник такой вопрос: я делаю систему репортов, и когда репорт отправляется в Discord, он обрезает длинные сообщения.

Я проверил: если написать 300 цифр, то приходит все 300, а если написать текст на 300 символов, то приходит меньше.

Что делать?
 

Вложения

  • discordReport.js
    4.7 KB · Просмотры: 27
  • discordClientReport.js
    809 байт · Просмотры: 16
  • index.js
    3.3 KB · Просмотры: 24

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
2,425
239
100
Здравствуйте!

Проблема с обрезанием сообщения в Discord скорее всего связана с ограничением на количество символов в одном сообщении. Discord, как правило, имеет ограничение порядка 2000 символов на сообщение. Подумайте над тем, как разбить ваше сообщение на более короткие, чтобы избежать обрезания информации. Возможно, вам также пригодится функция разделения сообщения на несколько частей для отправки в Discord.
 

Inoi

/dev/null
Команда форума
Moderator
VIP
15 Окт 2020
4,084
2,006
208
35
ну у дискича вроде всегда было ограничение какое-то, хуй знает какое только
разница пушо считает лимит видимо по байтам а не по символам
цифры - аски, 1 цифра - 1 байт
а слова в юникоде или че там утф8 - могут быть и будут больше 1 байта на символ

наверное либо считать байты и дробить пост на несколько
либо кидать файлом?
 

Slash

Участник портала
BackEnd developer
10 Янв 2023
165
20
53
через что репорты отправляешь в дискорд? Вебхуки? только что проверил через https://discohook.org/ текст длиной в 1000+ символов дошёл
 
Реакции: derrsak

Eminem_1106

Новый участник
18 Июн 2023
24
3
47
JavaScript:
mp.events.addCommand("report", async (player, _, ...args) => {
    if (!args.length) return player.outputChatBox("!{#FF0000}Использование: /report [сообщение]");
    
    const fullMessage = args.join(" ");
    console.log("[DEBUG] Original message length:", fullMessage.length);
    
    const MAX_LENGTH = 1900;
    const messageToSend = fullMessage.length > MAX_LENGTH
        ? fullMessage.substring(0, MAX_LENGTH) + "..."
        : fullMessage;

    const reportData = {
        playerName: await getPlayerCharacterName(player.id) || player.name,
        playerId: player.id,
        message: messageToSend,
        fullMessage: fullMessage,
        timestamp: new Date().toISOString()
    };

    axios.post('http://127.0.0.1:3000/report', reportData)
        .then(() => player.outputChatBox("!{#00FF00}Репорт отправлен!"))
        .catch(err => {
            console.error("Ошибка отправки:", err);
            player.outputChatBox("!{#FF0000}Ошибка отправки репорта");
        });
});
 

MaltrzD

Участник портала
30 Сен 2024
8
7
19
Это метод отправки в ваш API, а человек выше попросил показать как конкретно вы отправляете вебхук/через бота сообщение, в общем реализацию API можете показать
 
Реакции: Slash

Eminem_1106

Новый участник
18 Июн 2023
24
3
47
вот полный код
 

Slash

Участник портала
BackEnd developer
10 Янв 2023
165
20
53
вот полный код
Ты отправляешь что-то на свой локальный сервер, тут нету логики взаимодействия с дискордром. Поищи в коде этого сервера на 3000 порту обработчик report(вероятнее всего это post будет) и отправь его логику работы
 

MaltrzD

Участник портала
30 Сен 2024
8
7
19
У него в первом сообщение в прикреплениях index.js, сам не заметил с первого раза
 

Slash

Участник портала
BackEnd developer
10 Янв 2023
165
20
53
увидел, там просто реализация странная


он что то ещё отправляет на свой локальный сервер, из за чего я подумал что это не то что-то, а там просто реализация такая
 

Slash

Участник портала
BackEnd developer
10 Янв 2023
165
20
53
вот полный код
отправляй сообщения в дискорд вебхуками, а ответы админов принимай ботом. Можешь связать айдишник сообщения и айди репорта и так понимать какой ответ админа к какому репорту отнести
 
Реакции: Eminem_1106

Eminem_1106

Новый участник
18 Июн 2023
24
3
47
Понял попробую спасибо.
 
Реакции: Slash

Similar threads