我有一个程序可以在 Discord 服务器上发送消息。我想添加一个方法来获取刚刚发送的消息,所以我可以打印它的message_id
console.log("Generate a 32 byte long AES key with PBKDF2");
var crypto = require('crypto');
var password = "secret password";
var PBKDF2_ITERATIONS = 15000; // number of iterations, higher is better but slower
// ### security warning - never use a fixed salt in production, this is for compare reasons only
var salt = generateFixedSalt32Byte();
// please use below generateSalt32Byte()
//var salt = generateSalt32Byte();
var aesKeySha256 = generateAes256KeyPbkdf2Sha256(password, PBKDF2_ITERATIONS, salt);
console.log('aesKeySha256 length: ',
aesKeySha256.length, ' data: ', bytesToHex(aesKeySha256));
var aesKeySha1 = generateAes256KeyPbkdf2Sha1(password, PBKDF2_ITERATIONS, salt);
console.log('aesKeySha1 length: ',
aesKeySha1.length, ' data: ', bytesToHex(aesKeySha1));
var aesKeySha1Base64 = generateAes256KeyPbkdf2Sha1Base64(password, PBKDF2_ITERATIONS, salt);
console.log('aesKeySha1 Base64: ', aesKeySha1Base64);
function generateAes256KeyPbkdf2Sha256(password, iterations, salt) {
return crypto.pbkdf2Sync(password, salt, iterations, 32, 'sha256');
}
function generateAes256KeyPbkdf2Sha1(password, iterations, salt) {
return crypto.pbkdf2Sync(password, salt, iterations, 32, 'sha1');
}
function generateAes256KeyPbkdf2Sha1Base64(password, iterations, salt) {
return crypto.pbkdf2Sync(password, salt, iterations, 32, 'sha1').toString('base64');
}
function generateSalt32Byte() {
return crypto.randomBytes(32);
}
function generateFixedSalt32Byte() {
return Buffer.from('0000000000000000000000000000000000000000000000000000000000000000', 'hex');
}
function bytesToHex(input) {
return input.toString('hex');
}
我们可以使用 fetch 命令来做到这一点,但这似乎不雅。直觉上,似乎应该有一种方法可以从发送函数中获取诸如 method_id 之类的详细信息,但我在 documentation
中找不到类似的内容答案 0 :(得分:0)
Messageable.send
返回一个 discord.Message
实例,您可以使用 id
属性获取它的 ID。
这里也不需要 asyncio.gather
函数,我只是使用普通的 for 循环并将 ID 附加到列表中
@bot.command(name='repeat', help='help me to understand bots')
async def repeat(ctx, *lines):
message_ids = []
for line in lines:
m = await ctx.send(line)
message_ids.append(m.id)
print(message_ids)
如果你真的想坚持使用asyncio.gather
@bot.command(name='repeat', help='help me to understand bots')
async def repeat(ctx, *lines):
message_ids = []
async def send_line(line):
m = await ctx.send(line)
message_ids.append(m.id)
await asyncio.gather(*[send_line(line) for line in lines])
print(message_ids)