Commands - Gllitter-bot/ilmina_bot GitHub Wiki
コマンド
discord.pyで定義されている関数とその詳細についてです。
A→Z順に並んでいます。
使用頻度の高い関数
特に使う機会の多いであろう関数の一覧です。
client.logout()
Discordからログアウトし、プログラムが終了される。
@client.event
async def on_message(message):
if message.content.startswith("exit"):
await client.logout()
client.run(*arg, **kwargs)
A blocking call that abstracts away the event loop initialisation from you.
上記はdicord.pyのドキュメントの原文だが、直訳すると「あなたからのイベントループの初期化を例外として無視するブロッキングコール」となる。
具体的な内容だが、ユーザーからの割り込みキー(Ctrl-CかDelete)を例外としてclient.startを完了するまで実行するといったもの。
client.runの引数については、ログインと接続の処理を行うclient.runの引数にそのまま使われる。
したがって、引数はBOTのトークンを記述することになる。
Basic creationでも述べたが、性質上 必ずプログラムの最後 に記述すること。
client.send_message(destination, content=None, *, tts=False, embed=None)
指定された場所にメッセージを送る。
destination
メッセージを送信する場所。
チャンネル、プライベートチャンネル、サーバー、ユーザーを指定できる。
content
送信するメッセージの内容。
内容がない場合、embedがなければならない。
tts
テキスト読み上げを使うかどうか。
embed
直訳すると「埋め込み」
タイムスタンプ、画像等のコンテンツ、埋め込まれたサムネイルやURL等がこれにあたる。
@client.event
async def on_message(message):
if message.content.startswith("Hello"):
await client.send_message(message.channel, "Hello!", tts=True)
on_message(message)
Discord上でメッセージがサーバーに送信されたときに実行される。
引数のmessageは、その送信されたメッセージ。
※メッセージの内容(文字列)を表すのはmessage.content
# オウム返し
@client.event
async def on_message(message):
await client.send_message(message.channel, message.content)
on_ready()
クライアントがDiscordから受信したデータの準備が整ったときに実行される。
問題がなければ、BOTがログインできる。
@client.event
async def on_ready():
pass
その他の関数
全てを挙げることは出来ないので、使いそうな関数を抜粋しました。
client.wait_for_message(timeout=None, *, author=None, channel=None, content=None, check=None)
Discordからのリプライを待ちます。
timeout
タイムアウトするまでの時間。
author
メッセージの送信者。
channel
メッセージを送信したチャンネル。
content
メッセージの内容。
check
これは関数で、引数はmessageだけを取る。
この関数が例外となったとき、全体も例外となる(未確認)
@client.event
async def on_message(message):
if message.content.startswith('!like'):
await client.send_message(message.channel, "何の食べ物が好き? !foodに続けて入力してください。")
def check(msg):
return msg.content.startswith('!food')
message = await client.wait_for_message(author=message.author, check=check)
name = message.content[len('!food'):].strip()
await client.send_message(message.channel, message.author,"は{}が好きです。".format(name))