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

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

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

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

Pythonista

Pythonistaは、iOS上でPythonプログラミングができる開発アプリです。さらに、Pythonの関数・変数などを自動で補完する便利なコードエディタや、PythonスクリプトをiOS上で多様な形で機能させる各種機能も内包しています。

Python 3.x

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

Python

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

Q&A

1回答

240閲覧

discordチケットbotを作ろうとしたけどエラー吐く

Fujikundao

総合スコア0

Discord

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

Pythonista

Pythonistaは、iOS上でPythonプログラミングができる開発アプリです。さらに、Pythonの関数・変数などを自動で補完する便利なコードエディタや、PythonスクリプトをiOS上で多様な形で機能させる各種機能も内包しています。

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2024/02/19 10:28

実現したいこと

import

1from discord import app_commands 2 3TOKEN = "トークン 4 5intents = discord.Intents.default() 6client = discord.Client(intents=intents) 7tree = app_commands.CommandTree(client) 8 9@client.event 10async def on_ready(): 11 await tree.sync() 12 13client.run(TOKEN) 14 15@tree.command(name="ticket", description="チケットを作成") 16@discord.app_commands.default_permissions( 17 administrator=True 18) 19async def create_ticket(interaction: discord.Interaction): 20 channel = client.get_channel(interaction.channel_id) 21 embed = discord.Embed( 22 title="", 23 color=0x178CE6, 24 description="", 25 ) 26 embed.set_footer(text="Made by Spicy │2023/08/25") 27 embed.add_field(name="チケット",value="お問い合わせはこちらからチケットを発行してください!") 28 await channel.send(embed=embed) 29 # チケット作成ボタンの表示 30 view = discord.ui.View() 31 button = discord.ui.Button(style=discord.ButtonStyle.primary, label="チケットを作成", custom_id="create_ticket") 32 view.add_item(button) 33 await interaction.channel.send("", view=view) 34 @client.event 35async def on_interaction(inter: discord.Interaction): 36 try: 37 custom_id = inter.data["custom_id"] 38 if custom_id == "create_ticket": 39 #ここにチケットを作成ボタンを押したときの動作を記述 40 ticket_owners = {} 41@client.event 42async def on_interaction(inter: discord.Interaction): 43 try: 44 custom_id = inter.data["custom_id"] 45 if custom_id == "create_ticket": 46 # create_ticketの処理 47 server = inter.guild 48 49 # ユーザーが既にチケットを持っている場合は処理を終了 50 if inter.user.id in ticket_owners.values(): 51 await inter.response.send_message("既にチケットが存在します。", ephemeral=True) 52 return 53 54 # プライベートチャンネルを生成 55 overwrites = { 56 server.default_role: discord.PermissionOverwrite(read_messages=False), 57 server.me: discord.PermissionOverwrite(read_messages=True), 58 inter.user: discord.PermissionOverwrite(read_messages=True) 59 } 60 channel_name = f"チケット-{inter.user.name}" 61 channel = await server.create_text_channel(name=channel_name, overwrites=overwrites) 62 63 ticket_owners[channel.id] = inter.user.id 64 65 await channel.send(f"{inter.user.mention} チケットが作成されました!") 66 67 ticket_message = f"チケットが作成されました!\n{channel.mention}" 68 69 await inter.response.send_message(ticket_message, ephemeral=True) 70 71 # チケットチャンネルに削除ボタンを表示 72 view = discord.ui.View() 73 button = discord.ui.Button(style=discord.ButtonStyle.danger, label="チケットを削除", custom_id="delete_ticket") 74 view.add_item(button) 75 await channel.send("", view=view) 76 ticket_owners[channel.id] = inter.user.id 77 elif custom_id == "delete_ticket": 78 # delete_ticketの処理 79 channel = inter.channel 80 81 # チケットチャンネルを削除 82 await channel.delete() 83 84 # チケット保持者の辞書から削除 85 del ticket_owners[channel.id]

発生している問題・分からないこと

イメージ説明

エラーメッセージ

error

1File "/private/var/mobile/Containers/Shared/AppGroup/8375FEF2-1276-42D0-908F-3A85DC925299/Pythonista3/Documents/discord認証_1.py", line 36 2 async def on_interaction(inter: discord.Interaction): 3IndentationError: unexpected unindent 4

該当のソースコード

unexpected

1async def on_interaction(inter: discord.Interaction):

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

調べても見つからなかった

補足

特になし

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

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

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

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

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

dameo

2024/02/19 22:03 編集

discord.pyはほとんど使ったことないですが、この手の非同期プログラミングの場合、最後にイベントループの実行に必要な場合が多いです。実際の処理は全てこのループ内で実行されることになり、それ以前はループ中に呼び出されるコールバックの登録に該当します。つまりアプリケーション終了までループは戻ってきません。 私の記憶だと13行目の client.run(TOKEN) がイベントループだったと思っていて、14行目以降は実行されていないのでは? つまり、これをプログラムの最後に持っていけば現象が変わるのではないでしょうか? 言ってることの意味が分からない場合は、勉強してください。コピペしたプログラムが動かなかったとしても、修正方法を他人に聞いてはいけません。意味が分からなくて、分からない部分を別途質問を立てて聞くのはありだと思います。意味も分からずプログラムを動かされても、discord運営さんやサーバーの関係者さんに迷惑でしょうし。 なお、このプログラムはそれ以前の問題で、1行も動いていません。インデントに問題があるってエラーに書いてあります。
guest

回答1

0

34行目にあるデコレータのインデントは入力ミスでしょうか。

変更前>

python

1 @client.event

変更後>

python

1@client.event

関係なければ無視して頂ければ幸いです。

投稿2024/02/19 10:52

編集2024/02/19 10:54
Huginn

総合スコア34

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問