21
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DiscordのBotでのファイル添付の仕方など【Python】

Last updated at Posted at 2018-08-14

最近はDiscordで戯れています。
今日は基本といってもいい、
・Botに発言させる
・Botにファイルを添付させる

のしかたを紹介したいと思います。

bot.py
import discord
import asyncio

client = discord.Client()

@client.event
async def on_ready():
    print('Logged in as')
    print(client.user.name)
    print(client.user.id)
    print('------')

@client.event
async def on_message(message):
    if message.content.startswith("はろー"):
        m = "こんにちは、" + message.author.name + "さん"
        await message.channel.send(m)

client.run('token')

discordのBotを作り始めたかたのコードはだいたいこうなっていると思います。

上記は誰かが「はろー」と発言したらそれに対応するコードっぽいです。

今日はこれをベースに説明していきます。

Botに発言させるメソッド message.channel.send

Botに発言させるためにはmessage.channel.sendというメソッドを使います。

使い方は、上のコード見て分かる通り、

await message.channel.send(発言したい内容)

となります。発言したい内容の部分以外のところはおまじないと思って良いです。

続いてファイルを添付させる方法です。

ファイルを添付する message.channel.send(file=discord.File(パス))

今度はmessage.channel.sendに、fileを引数として指定します。

使い方は、

await message.channel.send(file=discord.File(添付したいファイルのパス))

と言った形です。
基本的にはこれで使えます。

使い所としては誰が「ありがとう」って発言したら、予めサーバに保存してある、
スクリーンショット 2018-08-14 17.42.21.png
といった画像を添付するとか。

注意点としてはファイルのパスはフルパスじゃないと場合によってはNGかもです。

その他補足までに、

await message.channel.send(file=discord.File(添付したいファイルのパス, filename='aaa'))

とするとダウンロード可能な形でファイルを添付します。
スクリーンショット 2018-08-14 17.39.56.png

こんな感じになります。

また、

await message.channel.send('bbb', file=discord.File(添付したいファイルのパス))

とするとコメントも添えて添付してくれます。

上記を踏まえて出来上がるコードは、

bot.py
import discord
import asyncio

client = discord.Client()

@client.event
async def on_ready():
    print('Logged in as')
    print(client.user.name)
    print(client.user.id)
    print('------')

@client.event
async def on_message(message):
    if message.content.startswith("はろー"):
        m = "こんにちは、" + message.author.name + "さん"
        await message.channel.send(m)

    if message.content.startswith("ありがとう"):
        filepath = '/path/to/dir/attouteki.png'
        await message.channel.send(file=discord.File(filepath))

client.run('token')

こんな感じになると思います。

以上です

まとめると

発言させる

await message.channel.send(発言したい内容)

ファイルを添付する

await message.channel.send(file=discord.File(添付したいファイルのパス))

です。

次回はリアクションの付け方とかについて書いたりしたいです。

21
18
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?