我有一个问题。我有一个 Discord 机器人,允许用户使用 chatgpt npm 包与 GPT-4 进行通信。然而,当人工智能断行时,这并没有正确反映在 Discord 消息中,因此该消息被“挤在一起”。像这样:
我该怎么做才能真正在那里换行?我尝试告诉 GPT4 使用 在响应中,但是当我这样做时,它被发送为“ " 在代码块中,仍然没有换行符。只是 各个句子之间。这是我负责发送消息的代码的片段:
response = await api.sendMessage("User has sent you a query to the roleplay. Respond without breaking character in terms of the roleplay as you were taught at the start. His query is: "+message.content, {
parentMessageId: lastResponseId
}).then(async (response) => {
//add to user message history
if (userMessageHistory.has(message.author.id)) {
let userMessageHistoryArray = userMessageHistory.get(message.author.id);
userMessageHistoryArray.push(response.id);
userMessageHistory.set(message.author.id, userMessageHistoryArray);
} else {
let userMessageHistoryArray = [];
userMessageHistoryArray.push(response.id);
userMessageHistory.set(message.author.id, userMessageHistoryArray);
}
let responseFiltered = response.text.replace(/[^a-zA-ZěščřžýáíéďťňůúĚŠČŘŽÝÁÍÉĎŤŇŮÚ\?!,.0-9\\ -]/g, '');
const responseChunks = responseFiltered.match(/.{1,1800}/g) || [responseFiltered]; // Handle case of no long responses
for (const chunk of responseChunks) {
// Use template literal for line breaks
await message.channel.send({
content: `<@${message.author.id}>\n\n\`\`\`\n${chunk}\n\`\`\``
});
}
await message.reactions.removeAll();
await message.react('<a:checkmark2:751058781156278382>')
谢谢你。
使用特洛伊木马解决方案,用临时分隔符替换换行符。然后将消息分割成块,传递给discord块,最后让木马跳出来!
const delimiter = '|||'; // Choose a delimiter that won't be present in the text
const responseWithDelimiter = responseFiltered.replace(/\n/g, delimiter);
const responseChunks = responseWithDelimiter.match(/.{1,1800}/g) || [responseWithDelimiter]; // Handle case of no long responses
for (const chunk of responseChunks) {
// Jumping out
const formattedChunk = chunk.replace(new RegExp(delimiter, 'g'), '\n');
await message.channel.send({
content: `<@${message.author.id}>\n\n\`\`\`\n${formattedChunk}\n\`\`\``
});
}