見出し画像

【discord.py】ver2.0以降でチャンネル内に送信したメッセージをBOT側から取得する方法(2022年12月23日 更新)

ネットの検索結果上位の記事の多くは旧バージョンでの使い方を紹介しており、このようなコードを紹介していると思います。

import discord

TOKEN = Discord TOKEN
CHANNELID = Channel ID

client = discord.Client()

@client.event
async def on_ready():
    print('Startup Success!!!')

@client.event
async def on_message(message):
    if not message.author.bot:
        if message.content == 'はじめまして':
            await message.channel.send('よろしくおねがいします')

client.run(TOKEN)

しかしこのコードを実行してみると、このようなエラーが発生します。

Traceback (most recent call last):
  File "c:\-省略-\main.py", line 6, in <module>
    client = discord.Client()
TypeError: __init__() missing 1 required keyword-only argument: 'intents'

要は「intents」というものが必要らしい。

僕の解釈ではintentsは「discord.pyで使いたい機能を追加する拡張機能みたいなもの」だと思っています。

で、intentsの使い方を紹介しているサイト通りコードを入力して実行すると…

import discord

TOKEN = Discord TOKEN
CHANNELID = Channel ID

client = discord.Client(intents=discord.Intents.all())

@client.event
async def on_ready():
    print('Startup Success!!!')

@client.event
async def on_message(message):
    if not message.author.bot:
        if message.content == 'はじめまして':
            await message.channel.send('よろしくおねがいします')

client.run(TOKEN)

無事エラーも発生せず起動でき「はじめまして」と入力すると「よろしくおねがいします」とBOTが返してくれました。

この記事が気に入ったらサポートをしてみませんか?