web-dev-qa-db-ja.com

チャネル上のすべてのメッセージを取得して、ハステビンに投稿するにはどうすればよいですか? discord.js

私は疑わしいボットを理想化しています。これを考慮して、メンバーの質問の最後にチャネルを閉じ、ボットが作成したチャネルのログを含むhastebin.comからのリンクを送信する必要があることを説明する必要があります。

実際の例は次のとおりです。私はチケットを作成します。チャネルは、私とスタッフだけがチャネルを見ることができるように作成されます。質問して答えます。私の答えを得た後、チャネルは閉じられます(削除されます)。削除される前に、ボットはログを作成し、それをハステビンに送信します。ハステビンは以下の印刷では同じままです。

enter image description here

私を助けてください!

編集:私はそれらのほとんどを行う方法を知っていますが、私の問題は、チャネルログを取得して、フォーマットされたhastebinに投稿することです。

1
Amees

私たちが話をした後、私たちは本当にここに何かを得ました。私はあなたのコードをより効率的なものに更新し、discord.jsを使用するすべての人がここで何が起こっているかを理解できるようになると思います。

旧コード

    message.channel.fetchMessages().then(messages => {
        console.log(`${messages.size} procuradas.`);
        messages.array().reverse().forEach(msg => {
            console.log(`[${moment(msg.createdTimestamp).format("DD/MM/YYYY - hh:mm:ss a").replace("pm", "PM").replace("am", "AM")}] ` +
            `[${msg.author.username.toString()}]` + ": " + msg.content);
        });

    })

新しいコード

message.channel.fetchMessages().then(async messages => {
    console.log(`${messages.size} procuradas.`);

    let finalArray = [];

    const putInArray = async (data) => finalArray.Push(data);
    const handleTime = (timestamp) => moment(timestamp).format("DD/MM/YYYY - hh:mm:ss a").replace("pm", "PM").reaplce("am", "AM"); 

    for (const message of messages.array().reverse()) await putInArray(`${handleTime(message.timestamp)} ${msg.author.username} : ${msg.content}`); 

    console.log(finalArray);
    console.log(finalArray.length);

});

それが役に立てば幸い!

1
Fagner Sales