search
LoginSignup
2

More than 1 year has passed since last update.

posted at

updated at

Organization

【Python】Discord Botにページネーションを実装する【pycord】

0. 使用ライブラリ「pycord」について

当記事はDiscord APIのPythonラッパー「discord.py」の後継ライブラリ、「pycord」の新機能「ページネーション」についての解説記事です。discord.pyの開発終了については こちら から、pycordの導入方法・解説は以下の記事からご覧ください。

1. ページネーションとは

一般にいうページネーションとは「ページ分け」のことで、WEBサイトやドキュメントなどの長い文章を、似たデザインの複数のページに分割して掲載することをいいます。
当記事では、Python製のDiscord Botでページネーションを実装していきます。

2. ページネーションの実装

pycordの拡張「discord.ext.pages」を使用していきます

2.0. コードの基本形

discordbot.py
import discord

bot = discord.Bot()

# ここにコードを記述

bot.run('DISCORD_BOT_TOKEN')

'DISCORD_BOT_TOKEN' には、自分のBOTのTOKENを入れてください。

2.1. 最も簡単なページネーションの実装

discordbot.py
import discord
+ from discord.ext import pages

bot = discord.Bot()

# ここにコードを記述

bot.run('DISCORD_BOT_TOKEN')

まず、pycordのページネーション拡張をimportします。

ここからは #ここにコードを記述 に記述をしていきます。

discordbot.py
@bot.slash_command()
async def test_pages(ctx):
    await ctx.defer()
    test_pages = ['Page-One', 'Page-Two', 'Page-Three', 'Page-Four', 'Page-Five']
    paginator = pages.Paginator(pages=test_pages)
    await paginator.send(ctx)

pages.Paginatorpages には文字列か discord.Embed の配列を入れます。
配列の中身がそのままページとして反映されます。

1.png

とても簡単にページネーションを実装することができました。
ボタンをクリックすることで実際にページを推移することが可能です。

2.2. ページネーションの応用

show_disabled

pages.Paginator(show_disabled=False)

無効なボタンを非表示にします。

show_indicator

pages.Paginator(show_indicator=False)

インジケータ( 1/5 のような表示) を非表示にします。

author_check

pages.Paginator(author_check=False)

ページネーションのボタン操作をコマンドの入力者以外にも許可します。

custom_view

pages.Paginator(custom_view=discord.ui.View)

ページネーションのViewをカスタムします。
(新たにボタンやセレクトなどのUIを追加できます)

2.3. ページネーションのカスタム

discordbot.py
paginator.customize_button('next', button_label='next', button_style=discord.ButtonStyle.grey)
paginator.customize_button('prev', button_label='prev', button_style=discord.ButtonStyle.grey)
paginator.customize_button('first', button_label='first', button_style=discord.ButtonStyle.grey)
paginator.customize_button('last', button_label='last', button_style=discord.ButtonStyle.grey)

cus.png

ページネーションのUI (デザイン) を変更することができました。

3. おわりに

今回はDiscord Botにページネーションを実装する方法について解説しました。
何かありましたらコメント等で指摘して頂けると助かります。

4. 参考

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2