X
    Categories: discordPython

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を選択する。

 

②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に苦戦しつつ。

少しずつ自分アップデートしていければ。

 

それでは、また。

「普通の会社員」こそ 安定した副収入が得られる 不動産投資を

「安定した不労所得」の仕組みを作り、給与を超える家賃収入で、経済的自由を手に入れる方法はこちらから
とみます: 32歳の研究者(サラリーマン)の傍ら、DIYが得意な嫁と協力しながら大家業も。フォートナイト大好き! 今日を楽しもう~♪ ブログは毎日配信、もう3年以上。 1日1%アップデートを実践中!