Discord Bot 读取 Google 表格并在表格中返回值。我想在没有表格格式的消息中返回值 ar CSV

Posted

技术标签:

【中文标题】Discord Bot 读取 Google 表格并在表格中返回值。我想在没有表格格式的消息中返回值 ar CSV【英文标题】:Discord Bot reads Google Sheets and returns values in table. I'd like to return values ar CSV in a message without the table formatting 【发布时间】:2021-06-22 08:49:17 【问题描述】:

您好,我有一个正在尝试修改的机器人...

它目前在表格中显示数据,但我希望它在消息中显示为 CSV。

有没有办法做到这一点?

数据目前显示如下:

╔═════════════════════╤═════╤══════════␕╗

> ║ 姓名 │ Grd │ Val1 │ Val ║ ╟──────────────────────┼──────┼───────┼────────╢ ║ tom bob jan tim tom │ a │ 400K │ 469K ║ ╟──────────────────────┼──────┼───────┼────────╢ ║ tom bob jan tim tom │ b │ 392K │ 427K ║ ╟──────────────────────┼──────┼───────┼────────╢ ║ tom bob jan tim tom │ U │ 392K │ 455K ║ ╟──────────────────────┼──────┼───────┼────────╢ ║ tom bob jan tim tom │ U │ 385K │ 394K ║ ╟──────────────────────┼──────┼───────┼────────╢ ║ tom bob jan tim tom │ U │ 366K │ 445K ║ ╟──────────────────────┼──────┼───────┼────────╢ ║ tom bob jan tim tom │ U │ 363K │ 397K ║ ╟──────────────────────┼──────┼───────┼────────╢ ║ tom bob jan tim tom │ a │ 362K │ 433K ║ ╟──────────────────────┼──────┼───────┼────────╢ ║ tom bob jan tim tom │ a │ 362K │ 400K ║ ╟──────────────────────┼──────┼───────┼────────╢ ║ tom bob jan tim tom │ U │ 358K │ 426K ║ ╟──────────────────────┼──────┼───────┼────────╢ ║ tom bob jan tim tom │ U │ 356K │ 429K ║ ╟──────────────────────┼──────┼───────┼────────╢ ║ tom bob jan tim tom │ U │ 354K │ 409K ║ ╚═════════════════════╧═════╧═══════╧════ p>

我希望它显示如下:

姓名、等级、值1、值2 汤姆·鲍勃·詹·蒂姆·汤姆,a,400K,469K 汤姆·鲍勃·扬·蒂姆·汤姆,b,392K,427K 汤姆·鲍勃·扬·蒂姆·汤姆,U,392K,455K tom bob jan tim tom,U,354K,409K

提前致谢

.js 代码如下。

const config = require('../util/globals');
const  table  = require('table');
const  GoogleSpreadsheet  = require('google-spreadsheet');

const doc = new GoogleSpreadsheet(config.SHEET_ID);
doc.useServiceAccountAuth(require('../client-secret.json'));

module.exports = 
  command: 'list',
  aliases: ['le'],
  dm: false,
  permissions: (member) => 
    return true;
  ,
  async execute(bot, msg, args) 
    const abbreviations = fs
      .readFileSync('heroes.txt', 'utf-8')
      .split(/\r\n|\n/g)
      .map((row) => row.split(':')[0].toLowerCase());
    if (args.length < 4) 
      return msg.channel.send('Please at least enter 4 names.');
    
    if (args.slice(0, 5).some((arg) => !abbreviations.includes(arg))) 
      return msg.channel.send('Unrecognised name(s). Please use all lowercase');
    

    await doc.loadInfo();

    const sheet = doc.sheetsByTitle['Output'];
    await sheet.loadCells();

    sheet.getCellByA1('H3').value = args.slice(0, 5).join(' ');
    await sheet.saveUpdatedCells();

    const sheet2 = doc.sheetsByTitle['OutputI'];

    await sheet2.loadCells();
    const data1 = [
      [
        'Names',
        'Grd',
        'Value1',
        'value2',
      ],
      ...[...Array(15).keys()].slice(9).map((row) => 
        return [...Array(4).keys()].map(
          (column) => sheet2.getCell(row, column).value
        );
      )
    ];

    const data2 = [
      [
        'Names',
        'Grd',
        'Value1',
        'value2',
      ],
      ...[...Array(20).keys()].slice(15).map((row) => 
        return [...Array(4).keys()].map(
          (column) => sheet2.getCell(row, column).value
        );
      )
    ];

    msg.channel.send(
      '```' + table(data1).split('\n').slice(0, -2).join('\n') + '```'
    );
    msg.channel.send(
      '```' + table(data2).split('\n').slice(2).join('\n') + '```'
    );
  
;

【问题讨论】:

【参考方案1】:

我想通了。连问都觉得有点傻……

msg.channel.send(
  '```' + table(data1).split('\n').slice(0, -2).join('\n') + '```'
);
msg.channel.send(
  '```' + table(data2).split('\n').slice(2).join('\n') + '```'

只需要将以上几行更改为:

msg.channel.send(
  (data1)
);
msg.channel.send(
  (data2)

【讨论】:

以上是关于Discord Bot 读取 Google 表格并在表格中返回值。我想在没有表格格式的消息中返回值 ar CSV的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法使用 Discord.py 从 Google 表格(或 MySQL)调用?

discord bot c# 读取收到的直接消息

Discord Bot 读取对设置消息的反应

Discord bot c#获取用户信息(不带参数)并发回消息

Discord Bot 读取单行然后删除它们

Discord Bot 多次运行