将数组划分为嵌入页面 - Discord.JS

Posted

技术标签:

【中文标题】将数组划分为嵌入页面 - Discord.JS【英文标题】:Dividing an array into embed pages - Discord.JS 【发布时间】:2020-11-16 07:07:45 【问题描述】:

这就是数组在数据库中的样子。 (数组对象)

我希望显示一个包含所有“名称”的列表,但如果消息“大”(达到我决定的字符限制),请 +1 页等等

【问题讨论】:

查看消息反应收集器和事件'collect',可以将数组拼接成2lvl数组,并在反应句柄上编辑消息。 【参考方案1】:

我已经为此创建了一个库。您可以按原样使用该库,也可以查看其源代码并自行实现该功能。

注意:该库依赖于 typescript,因此如果您想按原样使用它,则必须使用 typescript。

https://github.com/Olian04/discord-dynamic-messages

$ npm i discord-dynamic-messages
import  MessageEmbed  from 'discord.js';
import  DynamicMessage, OnReaction  from '../src/api';

const first = () => new MessageEmbed()
  .setAuthor('TOTO', 'https://i.imgur.com/ezC66kZ.png')
  .setColor('#AAA')
  .setTitle('First')
  .setDescription('First');

const second = () => new MessageEmbed()
  .setAuthor('TOTO', 'https://i.imgur.com/ezC66kZ.png')
  .setColor('#548')
  .setTitle('Second')
  .setDescription('Second');

const third = () => new MessageEmbed()
  .setAuthor('TOTO', 'https://i.imgur.com/ezC66kZ.png')
  .setColor('#35D')
  .setTitle('Third')
  .setDescription('Third');

const clamp = (num, min, max) => Math.min(Math.max(num, min), max);

export class MessageEmbedMessage extends DynamicMessage 
  private embeds = [first, second, third];
  private embedIndex = 0;

  @OnReaction(':arrow_left:')
  public previousEmbed() 
    this.embedIndex = clamp(this.embedIndex - 1, 0, this.embeds.length - 1);
  

  @OnReaction(':arrow_right:')
  public nextEmbed() 
    this.embedIndex = clamp(this.embedIndex + 1, 0, this.embeds.length - 1);
  

  public render() 
    return this.embeds[this.embedIndex]()
      .setTimestamp()
      .setFooter(`Page $this.embedIndex + 1`);
  

【讨论】:

以上是关于将数组划分为嵌入页面 - Discord.JS的主要内容,如果未能解决你的问题,请参考以下文章

使用分隔符将二维数组划分为多个数组

如何查看linux系统中空闲内存/物理内存使用/剩余内存

将数组(元素组合)划分为自定义分区的所有方式

将浮点数组划分为相似的段(聚类)

将一个数组划分为 K 个差异最小的子数组

我如何将整数数组划分为N个分区?