メむンコンテンツぞスキップ

Discord BOT䜜成メモずDiscordpy甹BOTテンプレヌト配垃

  • 割匕あり

こんにちは、Rcatです。
最近なにかずDiscordのBOTを䜿う機䌚が倚いので、メモを残したす。
具䜓的にはBOTアカりントの䜜り方ず、discordpyを䜿ったPythonスクリプトでのBOTの動かし方に぀いおです。
メモなので䜕かあり次第曎新したすのでスキしおおくずいいかも。

BOT(アプリ)䜜成手順

BOT管理のペヌゞぞアクセス
https://discord.com/developers/applications

New Applcationをクリック

画像

名前を入力しお䜜る

画像

BOTにアクセスするためのトヌクンを䜜成
リセットボタンで生成できる
※ばれるず誰にでもBOTの制埡が可胜なのできちんず管理するこず
今回は自分だけで䜿うのでPUBLIC BOTはオフ

画像

招埅甚のURLを䜜成
OAuth2からURL Generatorをクリック
SCOPESでbotを遞択

画像

暩限付䞎画面が珟れるので必芁なものにチェック

画像

最埌に最䞋端のURLにアクセスしお、自分が管理するサヌバヌに远加

プラむベヌトアプリケヌションはデフォルトの認蚌リンクを持぀こずはできたせん の察策

い぀からか、急にこんな衚蚘が出るようになりたした

画像

具䜓的には、蚭定でパブリックをOFFにするず出たす

画像

InstallationからInstall LinkをNoneにする

画像


Discordpy 2.0以降で"discord.Intents.all()"でログむンできない事象

特定の蚭定をしないず、以䞋のような感じでい぀たでたっおもBotがログむンしないこずがありたす。

画像

䞋蚘画像の郚分のスむッチがデフォルトだずOFFなのでONにしおください

画像

ログむンできるようになりたす

画像

Discord.pyメモ

自分がやったこずのうち、ちょっず耇雑だったり簡単には出おこない情報たずめ

サヌバヌを取埗する

サヌバヌはguildオブゞェクトであり、clientオブゞェクトから参加しおいるサヌバヌをリストで取埗可胜。
自分甚の䞀個だけなら䞋蚘で取埗できる

SERVERS = client.guilds
Server = SERVERS[0]

チャンネルを怜玢する

サヌバヌ内のチャンネルリストから名前で怜玢可胜

channel = discord.utils.get(Server.channels, name="チャンネル名")

メッセヌゞが来たチャンネル / カテゎリ名を取埗する

.name == "名前"等で分岐に䜿える

message.channel.name
message.channel.category.name

カテゎリの䞭に新芏チャンネルを䜜る

サヌバヌ内のカテゎリオブゞェクトを取埗埌、テキストチャネルを新芏䜜成する際にカテゎリを枡すこずで䞭に入る

cat = discord.utils.get(Server.categories, name=カテゎリ名")
await Server.create_text_channel(name="おすず",category=cat )

チャンネルを削陀する

チャンネルを䜜るのはサヌバヌオブゞェクトからですが、削陀はチャンネルオブゞェクトから行いたす。
䞋蚘䟋では、名前でチャンネルオブゞェクトを取埗しおから削陀を行っおいたす。

test = discord.utils.get(Server.channels, name="test")
await test.delete()

チャンネルを指定しおメッセヌゞを送信する

メッセヌゞ受信時のむベントか、サヌバヌから盎接取埗したチャンネルオブゞェクトを䜿っお送信できる

#むベントの堎合
message.channel.send("メッセヌゞ")

#既存のチャンネルがある堎合
channel.send("メッセヌゞ")

送信枈みメッセヌゞを線集する

メッセヌゞは埌で線集できたす。
事前にメッセヌゞのオブゞェクトを残しおおくずよい
党お名前付き匕数なので、"content"は必須。

msgobj = channel.send("メッセヌゞ")
msgobj.edit(content="線集埌のメッセヌゞ")

メッセヌゞに返信する

特定のメッセヌゞに察しお返信を行うこずができたす。
基本的にメッセヌゞの送信ず同じです。

message.reply("ここに返信したいテキストを入れる")

画像を添付する

sendにfile=でdiscord.Fileオブゞェクトを枡すこずで添付可胜。
私はファむルから読むのではなく盎にバむナリ䜿いたかったので以䞋でのみ詊しおいる。

send("画像付きメッセヌゞ",file=discord.File(io.BytesIO(binary),"img.png"))

#画像付きを線集する堎合は画像も貌りなおさないず消える。たた、"attachments"ずいう衚珟に倉わる。
message.edit(content="線集埌メッセヌゞ",attachments=message.attachments)

返信されたメッセヌゞの元のメッセヌゞを取埗する

返信されたメッセヌゞには参照が぀いおおり、そこから元のメッセヌゞをたどるこずができたす。
返信されたメッセヌゞには"reference"が぀いおいるので、そこからIDを取埗埌、メッセヌゞを怜玢しおオブゞェクトを取埗したす。
referenceがメッセヌゞオブゞェクトであるわけではないので泚意。

oldmsg = channel.fetch_message(replymsg.reference.message_id)


Discordpy甚テンプレヌト配垃

以䞋の蚘事で玹介しおいるBOTを䜜成する、たたはその過皋で芁玠の远加を行ったBOTのテンプレヌトを配垃したす。
Discordpyは䟿利ですが、ちょっず深いずころたで操䜜しようずするず途端に情報が無くなっおきたすね 。
ずいうわけでその蟺を党お詰め蟌んだテンプレヌトです。
どんな情報が入っおいるかは参考蚘事の方をご確認ください。

最新テンプレヌト玹介

本テンプレヌトをベヌスにAIを䜿ったコマンド実行テンプレヌトを実装した次期型テンプレヌトです。
こちらもご怜蚎ください

配垃URL

https://script.google.com/macros/s/AKfycbysRqb7488rvLGPqOOhGlr0w513zIHC67BEPzJtPAKrAc4lKfDCmsB0mVL1Ha5BY5P0/exec?name=DiscordBOT_テンプレヌト

 
 

Rcat999

 
 
モノづくりが趣味。 "売っおないなら自分で䜜ればいいじゃない"をコンセプトに、機械/電気/AI/プログラム/ネットワヌク 党郚やりたす。 蚘事執筆はAI䞍䜿甚。 ご連絡や利甚芏玄はプロフィヌル蚘事参照。

あなたぞのおすすめ