Discord.py:長いメッセージを送信する

リカルドB。
@bot.command(name='mlist', help='List of members.')
async def mlist(ctx):
    nl = "\n"
    await ctx.send(f'The member list is:\n{nl.join(memberList())}')

現在のメンバーのリストをチャネルに送信する上記のコードがあります。不和メッセージの制限を超えるリストを作成し始めるまでは、問題なく機能しました。
私が見つけたものから、これを処理するための2つのオプションがあります。

  1. 制限を回避するためにリストを部分的に分割します。これにより、大量のメッセージが作成され、チャネルのクリーンアップが困難になります。
  2. リストをテキストファイルとして送信します。これは、毎回新しいファイルを作成、保存、開いてから削除しないとどうすればよいかわかりません。

私の目標を達成するための最良の方法について何かアドバイスはありますか?

ディギー。

これを達成する方法は、メンバーのいくつかの「ページ」をめくることができるいくつかの反応を含むメッセージを作成することです。

アイデアは使用しますClient.wait_for()

例:

import asyncio
import math

@bot.command()
async def members(ctx):
    members = [str(m) for m in ctx.guild.members]
    per_page = 10 # 10 members per page
    pages = math.ceil(len(members) / per_page)
    cur_page = 1
    chunk = members[:per_page]
    linebreak = "\n"
    message = await ctx.send(f"Page {cur_page}/{pages}:\n{linebreak.join(chunk)}")
    await message.add_reaction("◀️")
    await message.add_reaction("▶️")
    active = True

    def check(reaction, user):
        return user == ctx.author and str(reaction.emoji) in ["◀️", "▶️"]
                     # or you can use unicodes, respectively: "\u25c0" or "\u25b6"

    while active:
        try:
            reaction, user = await bot.wait_for("reaction_add", timeout=60, check=check)
        
            if str(reaction.emoji) == "▶️" and cur_page != pages:
                cur_page += 1
                if cur_page != pages:
                    chunk = members[(cur_page-1)*per_page:cur_page*per_page]
                else:
                    chunk = members[(cur_page-1)*per_page:]
                await message.edit(content=f"Page {cur_page}/{pages}:\n{linebreak.join(chunk)}")
                await message.remove_reaction(reaction, user)

            elif str(reaction.emoji) == "◀️" and cur_page > 1:
                cur_page -= 1
                chunk = members[(cur_page-1)*per_page:cur_page*per_page]
                await message.edit(content=f"Page {cur_page}/{pages}:\n{linebreak.join(chunk)}")
                await message.remove_reaction(reaction, user)
        except asyncio.TimeoutError:
            await message.delete()
            active = False

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

discord.pyでループメッセージを送信する

分類Dev

ループでメッセージを1回だけ送信するdiscord.py

分類Dev

プレフィックスが送信されたときにメッセージを送信するdiscord.py

分類Dev

on_member_join()discord.pyにメンバーにプライベートメッセージを送信する方法?

分類Dev

Discordボットが誕生日メッセージを送信する

分類Dev

特定のIDを持つ特定のサーバーにメッセージを送信する-discord.py

分類Dev

日時を常にチェックしてdiscord.pyでメッセージを送信する方法

分類Dev

著者が音声チャネルにいない場合、discord.pyはメッセージを送信します

分類Dev

discord.py特定のユーザーにプライベートメッセージを送信する方法

分類Dev

メッセージで言及したユーザーのプロフィール写真を送信する-discord.py

分類Dev

メッセージで言及したユーザーのプロフィール写真を送信する-discord.py

分類Dev

メッセージに反応を追加する(discord.py)

分類Dev

discord.pyでメッセージを編集する

分類Dev

discord.pyで以前のメッセージを取得する方法

分類Dev

discord.pyのメッセージを削除する方法

分類Dev

Discord.pyはメッセージを2回送信します

分類Dev

discord.pyは特定の日時にメッセージを送信します

分類Dev

Discord.jsでメッセージを送信する

分類Dev

Discord.py-別の名前またはユーザーでメッセージを送信する

分類Dev

関数からDiscord.py経由でメッセージを送信できないのはなぜですか?

分類Dev

Discord.py、webhookから送信されたメッセージを編集する方法はありますか?

分類Dev

すべてのチャネルにメッセージを送信する— Discord.py

分類Dev

discord.pyを使用して特定のチャネルにメッセージを送信する

分類Dev

Discord Py、IDを介して任意のチャネルでメッセージを送信する

分類Dev

コマンドなしでdiscord.pyでメッセージを送信する方法

分類Dev

discord.pyで、作成したばかりのチャンネルでメッセージを送信する方法は?

分類Dev

誰かがdiscord.pyでサーバーに参加したときに、直接メッセージを送信するにはどうすればよいですか?

分類Dev

メッセージを送信した後、Discord.pyボットがdmでスパムを送信し続ける

分類Dev

discord py-ユーザーが新しいランクを受け取った場合にメッセージを送信する(on_member_update)

Related 関連記事

  1. 1

    discord.pyでループメッセージを送信する

  2. 2

    ループでメッセージを1回だけ送信するdiscord.py

  3. 3

    プレフィックスが送信されたときにメッセージを送信するdiscord.py

  4. 4

    on_member_join()discord.pyにメンバーにプライベートメッセージを送信する方法?

  5. 5

    Discordボットが誕生日メッセージを送信する

  6. 6

    特定のIDを持つ特定のサーバーにメッセージを送信する-discord.py

  7. 7

    日時を常にチェックしてdiscord.pyでメッセージを送信する方法

  8. 8

    著者が音声チャネルにいない場合、discord.pyはメッセージを送信します

  9. 9

    discord.py特定のユーザーにプライベートメッセージを送信する方法

  10. 10

    メッセージで言及したユーザーのプロフィール写真を送信する-discord.py

  11. 11

    メッセージで言及したユーザーのプロフィール写真を送信する-discord.py

  12. 12

    メッセージに反応を追加する(discord.py)

  13. 13

    discord.pyでメッセージを編集する

  14. 14

    discord.pyで以前のメッセージを取得する方法

  15. 15

    discord.pyのメッセージを削除する方法

  16. 16

    Discord.pyはメッセージを2回送信します

  17. 17

    discord.pyは特定の日時にメッセージを送信します

  18. 18

    Discord.jsでメッセージを送信する

  19. 19

    Discord.py-別の名前またはユーザーでメッセージを送信する

  20. 20

    関数からDiscord.py経由でメッセージを送信できないのはなぜですか?

  21. 21

    Discord.py、webhookから送信されたメッセージを編集する方法はありますか?

  22. 22

    すべてのチャネルにメッセージを送信する— Discord.py

  23. 23

    discord.pyを使用して特定のチャネルにメッセージを送信する

  24. 24

    Discord Py、IDを介して任意のチャネルでメッセージを送信する

  25. 25

    コマンドなしでdiscord.pyでメッセージを送信する方法

  26. 26

    discord.pyで、作成したばかりのチャンネルでメッセージを送信する方法は?

  27. 27

    誰かがdiscord.pyでサーバーに参加したときに、直接メッセージを送信するにはどうすればよいですか?

  28. 28

    メッセージを送信した後、Discord.pyボットがdmでスパムを送信し続ける

  29. 29

    discord py-ユーザーが新しいランクを受け取った場合にメッセージを送信する(on_member_update)

ホットタグ

アーカイブ