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アカウント作成

 

  1. Developer Portal」より、New Applicationを選択する。
  2. botの画像や名前を設定していく。
  3. BotよりAdd botを選択する。
  4. tokenの文字列は、後のスクリプトで使う。
  5. OAuth2より、discordの鯖と連携させる。

 

以下、図を用いて↓

 

①「Developer Portal」より、New Applicationを選択する。

discordpy220904-2

 

②botの画像や名前を設定していく。

discordpy220904-4

↑後で変更もできるので、気楽に入力してOK。

 

③BotよりAdd botを選択する。

discordpy220904-5

↑左側メニュー内のBOTを選択すると、BOTを追加できる。

一度登録すると、リカバーできないよ! と注意されるが、BOT用に作ったアカウントなので、そのままOK。

 

④tokenの文字列は、後のスクリプトで使う。

discordpy220904-6

↑Botを作っていく。

  • SCO #5370

と、discordのアカウントっぽくなってきた。

TOKENの文字列は、スクリプト内で使う。

他の人に共有しないように。いつでも、Reset Tokenで作り直せる。

 

⑤OAuth2より、discordの鯖と連携させる。

discordpy220904-7

↑左側メニューより、URL Generatorを選択する。

BOTを選択し、BOTの操作権利を設定する。色々試したけど、管理者にしておけばOKかな。

その後、URLが発行されるので、ブラウザにコピペすると↓

discordpy220904-9

↑自分の建てた鯖に追加できるようになる。

そのまま認証して、完了。

 

スクリプトと’intents’エラーに対して

discordpy220907-2

 

↑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で打ち込むと…

discordpy220907-1

 

行けたぁぁぁ!!

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ネイティブ時代に向けて基礎武装していこう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です