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

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

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

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

Python 3.x

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

Python

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

Q&A

解決済

1回答

1286閲覧

Discord botで全コマンド使用不可

Raifu

総合スコア32

Discord

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

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2020/11/15 00:47

編集2020/11/15 00:48

いつも通りコードを記述した所、Bot自体は起動するんですがコマンドが起動しません。コードをここに書きたいんですがなにしろ228ラインあり書くのを渋っている状況です。こういう時の対処法を教えて下さい。エラーコード無しです。どんなコードを書いたかここに記述します

Python

1@client.event 2async def on_raw_reaction_add(payload): 3 4 if payload.message_id == ID: 5 6 print(payload.emoji.name) 7 guild_id = payload.guild_id 8 guild = discord.utils.find(lambda g: g.id == guild_id, client.guilds) 9 10 role = discord.utils.find(lambda r: r.name == payload.emoji.name, guild.roles) 11 12 if role is not None: 13 print(role.name + " was found!") 14 print(role.id) 15 member = discord.utils.find(lambda m: m.id == payload.user_id, guild.members) 16 await member.add_roles(role) 17 print("done") 18 19 20@client.event 21async def on_raw_reaction_remove(payload): 22 if payload.message_id == ID: 23 print(payload.emoji.name) 24 25 guild_id = payload.guild_id 26 guild = discord.utils.find(lambda g: g.id == guild_id, client.guilds) 27 role = discord.utils.find(lambda r: r.name == payload.emoji.name, guild.roles) 28 29 if role is not None: 30 member = discord.utils.find(lambda m: m.id == payload.user_id, guild.members) 31 await member.remove_roles(role) 32 print("done")

この上のコードを、下のコードの上に記述しました

Python

1@client.event 2async def on_ready(): 3 await client.change_presence(status=discord.Status.online,activity=discord.Game('試験中')) 4 print('Discord botサーバーに正常接続しました\nSuccessfully server connected\n-----')

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

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

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

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

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

sevenc-nanashi

2020/11/15 01:01

全てのコードがほしいです。(Tokenは隠して)
Raifu

2020/11/15 01:03

了解です ```Python import discord from discord.ext import commands from discord import Embed #サーバー接続表示(Print関数) print('Discord bot サーバーに接続中...\nConncting Discord bot server...\n-----') #プレフィックス client=commands.Bot(command_prefix='!') #サーバー接続+ステータス @client.event async def on_ready(): await client.change_presence(status=discord.Status.online,activity=discord.Game('試験中')) print('Discord botサーバーに正常接続しました\nSuccessfully server connected\n-----') #メッセージ削除 @client.command() @commands.has_permissions(administrator=True) async def clear(ctx,amount:int): await ctx.channel.purge(limit=amount) embed=discord.Embed(color=0x15ff00) embed.add_field(name="削除完了", value=f"指定された〔{amount}〕メッセージを削除しました", inline=False) embed.set_footer(text="Bot ADMIN/RaiFu#3935") await ctx.send(embed=embed) #会話 @client.command() async def おはよう(ctx): await ctx.send('おはよう!') @client.command() async def おやすみ(ctx): await ctx.send('おやすみなさい!') @client.command() async def こんにちは(ctx): await ctx.send('こんにちは!') @client.command() async def あつい(ctx): await ctx.send('大丈夫ですか?熱中症対策を忘れずにね!') #KICK @client.command() @commands.has_permissions(administrator=True) async def kick(ctx,member:discord.Member,*,reason=None): await member.kick(reason=reason) embed=discord.Embed(title="KICK処置完了", description="ユーザーにKICKを実行しました") embed.add_field(name='ユーザー', value=f'{member.mention}', inline=True) embed.add_field(name='理由', value=f'{reason}', inline=True) embed.set_footer(text="Bot ADMIN/RaiFu#3935") await ctx.send(embed=embed) #BAN @client.command() @commands.has_permissions(administrator=True) async def ban(ctx,member:discord.Member,*,reason=None): await member.ban(reason=reason) embed=discord.Embed(title="BAN処置完了", description="ユーザーにBANを実行しました") embed.add_field(name='ユーザー', value=f'{member.mention}', inline=True) embed.add_field(name='理由', value=f'{reason}', inline=True) embed.set_footer(text="Bot ADMIN/RaiFu#3935") await ctx.send(embed=embed) #CHAT @client.command() async def 死にたい(ctx): await ctx.send('人生一度きりなんですから思い切って楽しみましょう、一度相談してみませんか?私はあなたの幸せを願っています!https://www.since2011.net/yorisoi/n5/') @client.command() async def かわいい(ctx): await ctx.send('ありがとうございます、あなたも可愛いしかっこいいですね!') #REPORT @client.command() async def rp(ctx): await ctx.send('__**エラー、不具合等報告したい場合**__\nお手数をお掛けしますがサポートサーバーまで参加して頂き、エラーや不具合の内容を管理者のDMに送信をお願いします\nリンク: https://discord.gg/fptXBwc') #投票 @client.command() async def poll(ctx,*,message): embed=discord.Embed(title='投票内容',description=f'{message}',color=0x00ffc8) embed.set_footer(text="Bot ADMIN/RaiFu#3935") msg=await ctx.channel.send('@everyone 投票が作成されました!',embed=embed) await msg.add_reaction('⭕') await msg.add_reaction('❌') #Recruitment @client.command() async def re(ctx,reason=None,*,member:discord.Member): embed=discord.Embed(title='募集詳細', description='募集を開始したよ!', color=0x61ff79) embed.add_field(name='募集者', value=f'{member.mention}', inline=True) embed.add_field(name='募集内容', value=f'{reason}', inline=True) await ctx.send('おや、募集をはじめたようです...\n誰か参加してみませんか?',embed=embed) #認証 @client.command() async def verify(ctx): embed=discord.Embed(title="雪野Bot認証", color=0x00ffff) embed.add_field(name="申請が許可されるとサーバー内での特別なチャンネルへのアクセス権,特別なロールが付与されます", value="[認証申請](https://forms.gle/WFiWycsJf9yXpWFG9)", inline=False) embed.set_footer(text="Bot ADMIN/RaiFu#3935") await ctx.send(embed=embed) #ロール付与 @client.command() @commands.has_permissions(administrator=True) async def addrole(ctx,role:discord.Role,user:discord.Member): await user.add_roles(role) embed=discord.Embed(title="ロール付与完了") embed.add_field(name=f"付与したロール{role.mention}", value=f"付与されたユーザー{user.mention}", inline=False) embed.set_footer(text="Bot ADMIN/RaiFu#3935") await ctx.send(embed=embed) #ロール削除 @client.command() @commands.has_permissions(administrator=True) async def delrole(ctx,role:discord.Role,user:discord.Member): await user.remove_roles(role) embed=discord.Embed(title="ロール削除完了") embed.add_field(name=f"削除したロール{role.mention}", value=f'削除されたユーザー{user.mention}', inline=False) embed.set_footer(text="Bot ADMIN/RaiFu#3935") await ctx.send(embed=embed) #メッセージオールクリア @client.command() @commands.has_permissions(administrator=True) async def allclear(ctx,amount:999): await ctx.channel.purge(limit=amount) embed=discord.Embed(color=0x15ff00) embed.add_field(name="全削除完了", value="全メッセージを削除しました", inline=False) embed.set_footer(text="Bot ADMIN/RaiFu#3935") await ctx.send(embed=embed) #ロールチェック @client.command() async def rolecheck(ctx,rolename:discord.Role,user:discord.Member): if rolename not in user.roles: await ctx.send('__**ロール確認完了**__\nロールを保持していません') else: await ctx.send('__**ロール確認完了**__\nロールを保持しています') #Global-chat説明 @client.command() async def yukiglobal(ctx): embed=discord.Embed(title="人と人を繋ぐ、グローバルチャット", description="有効にするには[yuki-global]チャンネルを作成して下さい") await ctx.send(embed=embed) #Global-chat @client.event async def on_message(message): if message.author.bot: return GLOBAL_CH_NAME = "yuki-global" if message.channel.name == GLOBAL_CH_NAME: await message.delete() channels = client.get_all_channels() global_channels = [ch for ch in channels if ch.name == GLOBAL_CH_NAME] embed = discord.Embed(title="雪野Global-Chat", description=message.content, color=0x00bfff) embed.set_author(name=message.author.display_name, icon_url=message.author.avatar_url_as(format="png")) embed.set_footer(text=f"{message.guild.name} / {message.channel.name}", icon_url=message.guild.icon_url_as(format="png")) for channel in global_channels: await channel.send(embed=embed) @client.command() async def tmj(ctx): embed=discord.Embed(title="こんにちは〜、雪野と申します!", description="このサーバーでは以下のルールを厳守して下さい") embed.add_field(name="迷惑行為", value="メンションやその他管理者が迷惑行為と判断した場合", inline=True) embed.add_field(name="コマンドの悪用", value="例:コマンドの連投など", inline=True) embed.set_footer(text="了承出来る方はリアクションを押して下さい") await ctx.send(embed=embed) #HELP @client.command() async def hp(ctx): embed=discord.Embed(title="**こんにちは、雪野Botと申します**", description="これからあなたのDiscordライフを快適に過ごす為のお手伝いをさせて頂きます!```コマンドプレフィックス〔!〕```", color=0x00ffc8) embed.add_field(name="__`hp`__", value="今表示しているコマンドだよ、分からなくなったらいつでも任せてね![全ユーザー可能]", inline=False) embed.add_field(name="__`clear〔消去するメッセージ数〕`__", value="メッセージを指定された数だけ消去します、定期的にお掃除しないとね〜![サーバー管理者のみ]", inline=False) embed.add_field(name="__`ban〔対象ユーザーメンション〕 [理由]`__", value="悪質な方をBANできます、やる時は慎重にね...?[サーバー管理者のみ]", inline=True) embed.add_field(name="__`kick〔対象ユーザーメンション〕 [理由]`__", value="悪質な方をkickできます、悪質行為ダメ絶対![サーバー管理者のみ]", inline=True) embed.add_field(name="__`rp`__", value="何か不具合が起きてしまったかな?そんな時はこのコマンドを実行してね、解決方法が示されるよ![全ユーザー可能]", inline=True) embed.add_field(name="__`poll〔投票内容〕`__", value="投票が作成されサーバーに居る全員に投票内容が通知されます、通知がある事に気を付けて...[全ユーザー可能]", inline=True) embed.set_footer(text="Bot ADMIN/RaiFu#3935") await ctx.send('__ページ1/4__\nページ2を表示するには[!hp 2]を実行してください',embed=embed) #TOKEN client.run('*****') ```
hentaiman

2020/11/15 01:07 編集

gitHub,labにでも載せて見せたら・・・
sevenc-nanashi

2020/11/15 01:35

あ、自分の回答のとおりですね。 テストお願いします。
Raifu

2020/11/15 01:40

えーとですね...自分公式ドキュメント余り見ていなくてですね。。。何処に記述するか等教えていただければ幸いです
guest

回答1

0

ベストアンサー

すべてのコードがないので推測になりますが。
clientがcommands.Botの場合は、
on_message を使うとコマンドが動作しなくなります。どうしてですか。

デフォルトで提供されている on_message をオーバーライドすると、コマンドが実行されなくなります。これを修正するには on_message の最後に bot.process_commands(message) を追加してみてください。

これを試してみてください。

投稿2020/11/15 01:01

編集2020/11/15 02:17
sevenc-nanashi

総合スコア643

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

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

Raifu

2020/11/15 07:00

申し訳ないです、何処に記述すれば...。on_messageが特にない気が...。理解力が低いもので...
sevenc-nanashi

2020/11/15 07:07

グローバルチャットのところです。
Raifu

2020/11/15 07:09

あ、そっちですか。起動の場所かと思いました...、client.eventでon_messageにありますね、すいません...
Raifu

2020/11/15 07:31 編集

追加してみましたが変化なしですね.. @client.event async def on_message(): if message.author.bot: return GLOBAL_CH_NAME = "yuki-global" if message.channel.name == GLOBAL_CH_NAME: await message.delete() await bot.process_commands(message) 改行が上手くできてませんがインデント合ってます
Raifu

2020/11/15 08:34

エラーですね... NameError: name 'bot' is not defined
sevenc-nanashi

2020/11/15 09:03

おっと、変えるのを忘れていました。 clientをbotにしてみてください。 あとエラーの時はtraceback全文貼って下さい(ユーザー名以外は)。
Raifu

2020/11/15 09:31

Discord bot サーバーに接続中... Conncting Discord bot server... ----- Traceback (most recent call last): File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 31, in <module> start(fakepyfile,mainpyfile) File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 30, in start exec(open(mainpyfile).read(), __main__.__dict__) File "<string>", line 151, in <module> NameError: name 'bot' is not defined 変更したんですが...
sevenc-nanashi

2020/11/15 10:55

あ、逆だ。botをclientにしてください。
Raifu

2020/11/15 12:55

@client.event async def on_message(message): if message.author.client: return await client.process_commands(message) GLOBAL_CH_NAME = "yuki-global" if message.channel.name == GLOBAL_CH_NAME: await message.delete() channels = client.get_all_channels() global_channels = [ch for ch in channels if ch.name == GLOBAL_CH_NAME] こうして、このエラーです Discord bot サーバーに接続中... Conncting Discord bot server... ----- Discord botサーバーに正常接続しました Successfully server connected ----- Ignoring exception in on_message Traceback (most recent call last): File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/site-packages/discord/client.py", line 333, in _run_event await coro(*args, **kwargs) File "<string>", line 153, in on_message AttributeError: 'Member' object has no attribute 'client'
sevenc-nanashi

2020/11/15 20:25

message.author.client:はmessage.author.botのままでいいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問