discord.pyの始め方 ‘intents’エラーに対して
とみます(@20tomimasu)です。
SCO-NFT保有者に対し、NFTのメタ情報からランダムに抽出して、報酬の当選者を選定したく…
discord.pyの簡単なプログラミングに挑戦中。
どうしても、’intents’エラーにより、botが動かったのものの、色々と試行錯誤した結果、動作するようになりました。
メッセージを入力すると、BOTが回答する簡単なスクリプトです。
ログとして残しておきます。
discord.pyの始め方
discordのbotは、
- discord.py
で、動かすことができるそう。
Pythonは、すでにインストールしてあるので、そのまま使えそうだ。
- discord.py 始め方
で検索すると。
webエンジニアのShun Tannaiさんの記事が分かりやすかった。
>>Pythonで実用Discord Bot(discordpy解説)
まずは、botのアカウント作成から。
discordのbotアカウント作成
- 「Developer Portal」より、New Applicationを選択する。
- botの画像や名前を設定していく。
- BotよりAdd botを選択する。
- tokenの文字列は、後のスクリプトで使う。
- OAuth2より、discordの鯖と連携させる。
以下、図を用いて↓
①「Developer Portal」より、New Applicationを選択する。
②botの画像や名前を設定していく。
↑後で変更もできるので、気楽に入力してOK。
③BotよりAdd botを選択する。
↑左側メニュー内のBOTを選択すると、BOTを追加できる。
一度登録すると、リカバーできないよ! と注意されるが、BOT用に作ったアカウントなので、そのままOK。
④tokenの文字列は、後のスクリプトで使う。
↑Botを作っていく。
- SCO #5370
と、discordのアカウントっぽくなってきた。
TOKENの文字列は、スクリプト内で使う。
他の人に共有しないように。いつでも、Reset Tokenで作り直せる。
⑤OAuth2より、discordの鯖と連携させる。
↑左側メニューより、URL Generatorを選択する。
BOTを選択し、BOTの操作権利を設定する。色々試したけど、管理者にしておけばOKかな。
その後、URLが発行されるので、ブラウザにコピペすると↓
↑自分の建てた鯖に追加できるようになる。
そのまま認証して、完了。
スクリプトと’intents’エラーに対して
↑client のところで、エラーが発生してしまい。赤文字は失敗例。
- TypeError: __init__() missing 1 required keyword-only argument: ‘intents’
色々と検証したものの、エラーは消えたけどBOTが動かないなどの症状に直面し。
BOTのログインは確認できたのだが、メッセージ入力に対し、BOTからの回答が無い…
結論、intentsを以下にすることで行けた。
- client = discord.Client(intents=discord.Intents.all())
似たような質問が出ていた。
>>discord.pyを使ってBotを作っていたらエラーを吐かれた
最終的なIDLEでの編集後のスクリプトは↓
# 自分のBotのアクセストークンに置き換えてください
TOKEN = 'xxxxxxxxx'
# 接続に必要なオブジェクトを生成
client = discord.Client(intents=discord.Intents.all())
# 起動時に動作する処理
@client.event
async def on_ready():
# 起動したらターミナルにログイン通知が表示される
print('ログインしました')
# メッセージ受信時に動作する処理
@client.event
async def on_message(message):
# メッセージ送信者がBotだった場合は無視する
if message.author.bot:
return
# 「/sco」と発言したら「にゃーん」が返る処理
if message.content == '/sco':
# if message.content.startswith('/sco'):
await message.channel.send('にゃーん')
# Botの起動とDiscordサーバーへの接続
print('ここまでok')
client.run(TOKEN)
print('ここまでok')
F5でrunさせてから、discordで打ち込むと…
行けたぁぁぁ!!
SCOちゃん可愛い(*´▽`*)。
randomモジュールの使い方は、また次回。
おわりに
以上「discord.pyの始め方 ‘intents’エラーに対して」でした。
なんとか、BOTが動作しました。w
後は、SCO-NFTのメタ情報=background, body, face, fronthairの中からランダムに選定して、返答するようなプログラムを書ければ行けそうで。
久しぶりのpythonに苦戦しつつ。
少しずつ自分アップデートしていければ。
それでは、また。
ようこそ! とみますん家へ (Discordコミュニティ)
・これまで発信してきた内容について、質問したい方
・気楽に相談したい方
・私への仕事依頼や共同コラボを考えていて、事前に検討したい方
・ちょっと様子を見たい方
を対象に、無料オンラインコミュニティを開設しました。
Discord(ディスコード)と呼ばれるSNSを利用しています。
とみますん家の間取り↓
・投資部屋 (不動産, DIY, 日経225オプション取引, sp500, VIX, fx)
・ゲーム部屋 (walk to earn, play to earn, Fortnite, ガジェット)
・制作部屋 (NFT, スコ猫ちゃん, AIイラスト制作)
・会員限定部屋 (自己紹介して頂いた方にロールを付与します)
など。
遊びに来てくれたお礼↓
・SCO猫ちゃんのNFTくじを無料で引ける。外れ無し!! (先着100名まで)
・さらに、そのNFTを保有していると、毎月配当を貰えるチャンスがある。(配当原資はこのブログから得た収益の10%から。)
・作品の先行ご案内
一言/
NFTだけ欲しいとかでもOK! お気兼ねなく。初期時代から私を応援してくれている証にもなります、何か良いことが起きるかも?
NFTくじを引いてくれた人数と配当実績/
'22年07月, 合計Mint数=1人, 配当104USDT
'22年08月, 合計Mint数=4人, 配当103USDT
'22年09月, 合計Mint数=7人, 配当 90USDT
'22年10月, 合計Mint数=9人, 配当105USDT
'22年11月, 合計Mint数=10人, 配当70USDT
'22年12月, 合計Mint数=10人, 配当124MATIC (12400円)
'23年01月, 合計Mint数=13人, 配当63MATIC(10400円)
'23年02月, 合計Mint数=15人, 配当29MATIC (4800円)
'23年03月、あなたのご参加お待ちしております!!
初めてみた所感/
・NFTやMetamaskなど全く触ったことが無い人のきっかけになっている。→初心者welcomeの雰囲気を作っていこう。
・Web3やNFTは日本の国家戦略、これからのWeb3ネイティブ時代に向けて基礎武装していこう。