質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.34%

  • Python 3.x

    7360questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pythonでdiscordのbotを作りたいが躓いています。

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,303

banjo

score 1

 前提・実現したいこと

以下のサイトのコードを使ってdiscordの投票botを作成したいです。
初心者ですがよろしくお願いします。
https://foolean.net/p/1688

 発生している問題・エラーメッセージ

C:\Users\xxx\Desktop\bot>yyy.py
Traceback (most recent call last):
  File "C:\Users\xxx\Desktop\bot\yyy.py", line 3, in <module>
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python37\lib\site-packag
es\discord\__init__.py", line 20, in <module>
    from .client import Client, AppInfo, ChannelPermissions
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python37\lib\site-packag
es\discord\client.py", line 38, in <module>
    from .state import ConnectionState
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python37\lib\site-packag
es\discord\state.py", line 36, in <module>
    from . import utils, compat
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python37\lib\site-packag
es\discord\compat.py", line 32
    create_task = asyncio.async
                              ^
SyntaxError: invalid syntax

 該当のソースコード

#coding: utf-8

import discord
client = discord.Client()

TOKEN = "ご自身のトーーーークン"

# 各ユーザのリアクション(スタンプ)を保存して置くためのdict
from collections import defaultdict
user_reaction_dic = defaultdict(dict)

# リアクションが追加された時の処理
@client.event
async def on_reaction_add(reaction, user):

    # リアクションが追加されたメッセージの取得
    message = reaction.message

    # この投稿に対してこれまでにリアクションしたかを判定
    if message.id not in user_reaction_dic[user.id]:
        # 新しく登録された絵文字なので情報を保存しておく
        user_reaction_dic[user.id][message.id] = reaction.emoji
    else:
        # 前回の絵文字を削除して更新する
        await client.remove_reaction(message, user_reaction_dic[user.id][message.id], user)
        user_reaction_dic[user.id][message.id] = reaction.emoji

# リアクションが削除された時の処理
@client.event
async def on_reaction_remove(reaction, user):

    # リアクションが追加されたメッセージの取得
    message = reaction.message

    # 保存してあるリアクション情報と一致したらそれを削除しておく
    if user_reaction_dic[user.id][message.id] == reaction.emoji:
        del user_reaction_dic[user.id][message.id]

# BOTを実行
client.run(TOKEN)

 試したこと

ここに問題に対して試したことを記載してください。

 補足情報(FW/ツールのバージョンなど)

回答いただけたお二方、ありがとうございます。Pythonのバージョンを落として再度実行したところ、エラーメッセージがかなり短くなりました。

Traceback (most recent call last):
  File "C:\Users\xxx\Desktop\bot\yyy.py", line 3, in <module>
ModuleNotFoundError: No module named 'discord'


discord.pyはインストールしてありますがどう使えばよいかわかりません。無知ですみませんが教えていただけると助かります。

[追記]
コマンドプロンプトからpip install -U discord.pyを入力したところ

Traceback (most recent call last):
  File "C:\Users\xxxi\Desktop\Python_study\yyy.py", line 40, in <module>

  File "C:\Develop\Python3.6.4\lib\site-packages\discord\client.py", line 519, i
n run
    self.loop.run_until_complete(self.start(*args, **kwargs))
  File "C:\Develop\Python3.6.4\lib\asyncio\base_events.py", line 467, in run_unt
il_complete
    return future.result()
  File "C:\Develop\Python3.6.4\lib\site-packages\discord\client.py", line 490, i
n start
    yield from self.login(*args, **kwargs)
  File "C:\Develop\Python3.6.4\lib\site-packages\discord\client.py", line 416, i
n login
    yield from getattr(self, '_login_' + str(n))(*args, **kwargs)
  File "C:\Develop\Python3.6.4\lib\site-packages\discord\client.py", line 346, i
n _login_1
    data = yield from self.http.static_login(token, bot=is_bot)
  File "C:\Develop\Python3.6.4\lib\site-packages\discord\http.py", line 258, in
static_login
    data = yield from self.request(Route('GET', '/users/@me'))
  File "C:\Develop\Python3.6.4\lib\site-packages\discord\http.py", line 121, in
request
    headers['Authorization'] = 'Bot ' + self.token if self.bot_token else self.t
oken
TypeError: must be str, not int
Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x000000000387FF28>


というメッセージが出てきました。助けてください。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

使用しているライブラリのインストール手順を質問文に追記してくださいな。

    create_task = asyncio.async


Cant Import in Python 3.7.0b3

リンク先に記載がありますが、対策方法は2案。
1,Pythonをアンインストールしてバージョンを3.7から下げる
2,masterブランチは修正済みなため、masterブランチに対して、pip installする。

◇参考情報
tweepyが実行出来ません


ModuleNotFoundError: No module named 'discord'

Pythonのバージョンを落とした後にdiscord.pyモジュールの再インストールを行っていないだけでは?
質問のリンク(https://foolean.net/p/1688)から辿れる意外と簡単だったからDiscordのBOTを作ってみるよを参考に再インストールを行ってください。


python3 -m pip install -U discord.py

一度discord.pyをインストールしたのではないのですか?
最初のエラーメッセージはdiscord.pyがインストール済みな環境でしか発生しないエラーメッセージなのですが…

結論をいうとインタラクティブシェルではなく、コマンドプロンプトより入力するコマンドは以下です。

pip install -U discord.py

コマンドプロンプトからpip install -U discord.pyを入力したところ

File "C:\Users\xxxi\Desktop\Python_study\yyy.py", line 40, in <module>

pipインストール後に、yyy.pyを実行したように見受けられますが。
1, pip install -U discord.pyを実行時にエラーが発生
2, pipインストール後に、yyy.pyを実行時にエラーが発生

どちらでしょうか。手順は正確に書いて頂けると嬉しいのですが。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/15 14:24

    pythonのインタラクティブシェルで
    ```
    python3 -m pip install -U discord.py
    ```
    と打ち込んだところ
    ```
    >>> python3 -m pip install -U discord.py
    File "<stdin>", line 1
    python3 -m pip install -U discord.py
    ```
    とエラーメッセージが出ます。どういう意味なのでしょうか?

    キャンセル

  • 2018/07/16 23:20

    teratailに初めて来たものの、流石に勉強不足が過ぎたと反省しています。しっかり基礎を勉強してからまた参ります。よろしくお願いします。ありがとうございました。

    キャンセル

+1

Python3.7以降、asyncが新たに予約語に指定されました。

>>> # 3.6
>>> async = 42
>>> # 3.7
>>> async = 42
  File "<stdin>", line 1
    async = 42
          ^
SyntaxError: invalid syntax

Pythonのバージョンを落とすと解消するように思います。

質問編集を受けて

ModuleNotFoundError: No module named 'discord'

discordモジュールは具体的にどのように導入されたのでしょうか。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.34%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Python 3.x

    7360questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。