javascript - 如何使消息减半以避免消息长度错误?
问题描述
当我的服务器机器人中有超过 25 个机器人无法根据消息发送长度能力发送消息时,如果长度为 2000 发送另一条带有机器人列表的消息,有什么办法吗?
client.on('message', message => {
if(message.content === "-allbots") {
if(!message.channel.guild) return;
let addone = 1;
const botcounts = message.guild.members.filter(m=>m.user.bot).map(m=>`\`\`${addone++}\`\` - <@${m.id}>`);
message.channel.send(`**I Found ${message.guild.members.filter(m=>m.user.bot).size} bots ${botcounts.join('\n')}**`)
.catch(err => {
message.reply('message is more than 2000 charachter');
console.error(err);
})
}
})
解决方案
Discord.js 可以自动为您完成。在使用该属性时传入一个MessageOptions对象。TextChannel.send()
split
message.channel.send('Text longer than 2000 characters...', {
split: {
prepend: '...',
append: '...'
}
);
消息将如下所示:
first part...
...second part
编辑:
将其合并到您现有的代码中看起来类似于:
message.channel.send(
`**I found ${botcounts.length} bot${botcounts.length !== 1 ? 's' : ''}.**
${botcounts.join('\n')}`,
{ split: true } // No "..." is added. See above for that usage.
)
.catch(console.error);
推荐阅读
- python - Python 3.6.4 中的 mca 和 Prince 包安装
- android - 通过android的RecyclerView适配器中的外部链接加载.svg图像?
- reactjs - Azure reactjs 部署最佳实践
- android - 可以制作一个活动来复制卡片视图的行为吗
- python - 关于在列表中查找整数平均值的 Python 3 程序
- node.js - 无法在 setTimeout 中向服务器发送流
- java - Java 线程 - 循环内的内容
- linux - Perl Uncaught SyntaxError:无效或意外的令牌
- oracle - Oracle 到 PostgreSQL 数据库减少
- macos - NSTableView reloadData(forRowIndexes:columnIndexes:) 打破自动布局