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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

Python 3.x

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1485閲覧

ユーザー別関数、関数に+1をする方法がわからない

Reply

総合スコア21

Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

Python 3.x

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

2クリップ

投稿2020/05/28 12:37

編集2020/05/31 10:14

###したいこと
DiscordBOTで人狼を作っているのですが、ユーザー別に関数を設定する方法と、コマンドを打った時に指定した関数に +1 する方法が知りたいです。

誰かが参加したときに players の関数に +1 をして参加人数を表示させたい、ということです。
誰かが抜けたら -1 をして参加人数を1人減らすみたいな感じです。

###該当のソースコード

python

1@client.event 2async def on_message(message): 3 if message.author.bot: 4 return 5 if message.content == "/jinro join": 6 if user(user_id) == "nothing": 7 players = players + 1 8 await message.channel.send(message.author.mention + " が参加しました。(" + players + "人)") 9 else: 10 return

#発生した問題
6行目

UnboundLocalError: local variable 'user' referenced before assignment

###試したこと
とりあえずこのように記述したのですがだめでした。

「discord.py point」などと検索したのですが、見つかりませんでした。

###補足情報
python3.8.3
discord.py1.3.3

###関数user

python

1if message.content == "/raid": 2 if user(user_id) == "jinro": 3 # 噛み処理 4 else: 5 await message.channel.send("そのコマンドは人狼のみ使用可能です。")

こんな感じで関数userはプレイヤー別の生死、役職を定義してコマンド入力時などで判定を取ろうと思っています。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coolwind0202

2020/05/28 12:52

関数に+1するとはどういう意味ですか?
y_waiwai

2020/05/28 12:59

ダメとはどういうふうにダメなんでしょう
daima3629

2020/05/28 13:08

関数userがどういうものなのか全く書かれていませんし、具体的にどういう処理をしたいのか書かれていません。 これらの情報を追記してくださらないと分かる人も分からないかと
Reply

2020/05/28 14:12

coolwindo0202さん 誰かが参加したときに players の関数に +1 をして参加人数を表示させたい、ということです。 誰かが抜けたら -1 をして参加人数を1人減らすみたいな感じです。 y_waiwaiさん 6行目の user が認識されなくて UnboundLocalError: local variable 'user' referenced before assignment というエラーが出てしまいました。 daimaさん含め記述が少なくて申し訳ないです。
daima3629

2020/05/28 16:33

その情報をここに書くのではなくしっかり質問内容に書いてください。 それから、もう一度言いますが、関数userがどんな動きをしているのか見せてください。 定義部分を貼ってもらうだけでもいいです。
guest

回答1

0

ベストアンサー

関数userが関数on_message()より下で定義されているから、とかでは無いですか?

投稿2020/06/01 08:20

tacanoviano

総合スコア46

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Reply

2020/06/05 02:18

回答遅れてすいません。 関数userの定義は理解しているつもりです。 というより user(user_id) の (user_id) が合っているか分からないんですが、これはこれでいいんでしょうか..?
tacanoviano

2020/06/06 15:41

間違っていると言える自信は無いですが、use_idという変数はデフォルトに無い気がします。 user関数じゃなくて↓のような方法で数えてはどうですか? https://discordbot.jp/blog/3/
Reply

2020/06/08 13:11

確かにuser_idは定義されてないからエラーが出るのも当たり前でした.. user_idを[message.author.id]って変えたら(user[message.author.id])できました。 こちらの質問回答していただいたのですが、自己解決とさせていただきます。 この不完全な質問に答えていただきありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問