「Discord」の版間の差分

提供:ペチラボ書庫
ナビゲーションに移動 検索に移動
 
(同じ利用者による、間の8版が非表示)
9行目: 9行目:
# Privileged Gateway Intentsを設定する
# Privileged Gateway Intentsを設定する
# botをサーバーに招待する
# botをサーバーに招待する
== messageに含まれる情報 ==
* id


== できること ==
== できること ==
14行目: 18行目:
===リアクションをつける===
===リアクションをつける===
<syntaxhighlight lang="python">
<syntaxhighlight lang="python">
async def on_message(message)
async def on_message(message):
await message.add_reaction('👍')
await message.add_reaction('👍')
</syntaxhighlight>
</syntaxhighlight>
20行目: 24行目:
===リプライ===
===リプライ===
<syntaxhighlight lang="python">
<syntaxhighlight lang="python">
async def on_message(message)
async def on_message(message):
await message.reply('リプライ')
await message.reply('リプライ')
</syntaxhighlight>
</syntaxhighlight>
===ファイル送信===
<syntaxhighlight lang="python">
channel = client.get_channel(CHANNEL_ID)
await channel.send(file=discord.File("filename"))
</syntaxhighlight>
== 定期実行 ==
* https://discordpy.readthedocs.io/ja/latest/ext/tasks/index.html
@tasks.loop() デコレータの処理を宣言して、on_ready()で開始する
@tasks.loop(minutes=30) とすれば30分おきに実行
<syntaxhighlight>
jst = datetime.timezone(datetime.timedelta(hours=+9), 'JST')
times = [
    datetime.time(hour=13, minute=00, tzinfo=jst)
]
@tasks.loop(time=times)
async def loop():
    # 処理
@client.event
async def on_ready():
    await loop.start()
</syntaxhighlight>
のようにすれば指定の時刻に実行される
== スラッシュコマンド ==
このへんに書かれてます
https://discordpy.readthedocs.io/ja/latest/interactions/api.html#discord.app_commands.Command
引数の入力補完には choices か autocomplete が使えそうだが、choices は25個までの制限がある模様

2025年3月6日 (木) 00:03時点における最新版

主にdiscord.pyについて書く

Discord bot の作成

  1. Applicationを作成する
  2. botアカウントを追加
  3. Privileged Gateway Intentsを設定する
  4. botをサーバーに招待する

messageに含まれる情報

  • id


できること

リアクションをつける

async def on_message(message):
	await message.add_reaction('👍')

リプライ

async def on_message(message):
	await message.reply('リプライ')

ファイル送信

channel = client.get_channel(CHANNEL_ID)
await channel.send(file=discord.File("filename"))

定期実行

@tasks.loop() デコレータの処理を宣言して、on_ready()で開始する

@tasks.loop(minutes=30) とすれば30分おきに実行

jst = datetime.timezone(datetime.timedelta(hours=+9), 'JST')
times = [
    datetime.time(hour=13, minute=00, tzinfo=jst)
]
@tasks.loop(time=times)
async def loop():
    # 処理

@client.event
async def on_ready():
    await loop.start()

のようにすれば指定の時刻に実行される

スラッシュコマンド

このへんに書かれてます https://discordpy.readthedocs.io/ja/latest/interactions/api.html#discord.app_commands.Command

引数の入力補完には choices か autocomplete が使えそうだが、choices は25個までの制限がある模様