Unresolved attribute reference 'voice_client_in' for class 'Bot' - python

I want to make a discord bot that can queue a song. I saw a code here but the code showed an error like this :
Traceback (most recent call last):
File "C:\Users\Komputer\PycharmProjects\CiaaBot\venv\lib\site-packages\discord\ext\commands\bot.py", line 902, in invoke
await ctx.command.invoke(ctx)
File "C:\Users\Komputer\PycharmProjects\CiaaBot\venv\lib\site-packages\discord\ext\commands\core.py", line 864, in invoke
await injected(*ctx.args, **ctx.kwargs)
File "C:\Users\Komputer\PycharmProjects\CiaaBot\venv\lib\site-packages\discord\ext\commands\core.py", line 94, in wrapped
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'Bot' object has no attribute 'is_voice_connected'
What should I do then?

is_voice_connected is outdated
You should use Guild.voice_client
#bot.command()
async def queue(ctx):
if ctx.guild.voice_client: # Its connected to voice
...

Related

Command raised an exception: AttributeError: 'NoneType' object has no attribute 'html'

Im currently learning Python and im not so good in coding and stuff, but i have a problem, i get all the time the error Command raised an exception: AttributeError: 'NoneType' object has no attribute 'html' and i don't know what that means, i think its summething that the object NoneType not a attribute 'html' has. Im using discord.py the newest version and chat-exporter. I already read the Documentation but i didn't found any solution to my problem.
Here is the code:
#client.command()
#commands.has_role(MANAGEMENT_ROLE_ID)
async def archive(ctx: commands.Context):
transcript = await chat_exporter.export(
ctx.channel,
tz_info="UTC",
military_time=True,
bot=client
)
if transcript is None:
return
print(transcript)
transcript_file = discord.File(
io.BytesIO(transcript.encode()),
filename=f"transcript-{ctx.channel.name}",
)
await ctx.send(file=transcript_file)
and thats the full log of it
Traceback (most recent call last):
File "C:\Users\Jonas\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\discord\ext\commands\core.py", line 85, in wrapped
ret = await coro(*args, **kwargs)
File "d:\Discord\discord Bots\derzockereckenbot 2.0\main.py", line 136, in archive
transcript = await chat_exporter.export(
File "C:\Users\Jonas\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\chat_exporter\chat_exporter.py", line 50, in export
return (
AttributeError: 'NoneType' object has no attribute 'html'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\Jonas\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\discord\ext\commands\bot.py", line 939, in invoke
await ctx.command.invoke(ctx)
File "C:\Users\Jonas\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\discord\ext\commands\core.py", line 863, in invoke
await injected(*ctx.args, **ctx.kwargs)
File "C:\Users\Jonas\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\discord\ext\commands\core.py", line 94, in wrapped
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'NoneType' object has no attribute 'html'
Can you please help me
Solution: downgrade your chat-exporter version

Why do I get the error "send() got an unexpected keyword argument" when running a command with my selfbot?

I am trying to make a Selfbot in Python. I have this command to DM all users in a guild. In a guild I do {prefix}dmall (message) and then send it and get this error.
#knife.command() # dms all guild users
async def dmall(ctx):
for user in ctx.guild.members:
await user.send(message=ctx.message)
Ignoring exception in command dmall:
Traceback (most recent call last):
File "E:\python\lib\site-packages\discord\ext\commands\core.py", line 85, in wrapped
ret = await coro(*args, **kwargs)
File "C:\Users\me\OneDrive\Desktop\endless sb template\main.py", line 104, in dmall
await user.send(message=ctx.message)
TypeError: send() got an unexpected keyword argument 'message'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "E:\python\lib\site-packages\discord\ext\commands\bot.py", line 939, in invoke
await ctx.command.invoke(ctx)
File "E:\python\lib\site-packages\discord\ext\commands\core.py", line 863, in invoke
await injected(*ctx.args, **ctx.kwargs)
File "E:\python\lib\site-packages\discord\ext\commands\core.py", line 94, in wrapped
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: send() got an unexpected keyword argument 'message'
Remove the keyword message in the line await user.send(message=ctx.message)
I don't know what you're trying to do here but try this:-
#knife.command()
async def dmall(ctx):
for user in ctx.guild.members:
await user.send(ctx.message)

Make the bot discord send a message when someone type "!clear" has no permission

#client.command(pass_context=True)
#commands.has_permissions(administrator=True)
async def clear(ctx,amount=1000):
await ctx.channel.purge(limit=amount)
#clear.error
async def clear_error(ctx,error):
if isinstance(error, MissingPermissions):
text = "Sorry {}, you do not have permissions to do that!".format(ctx.message.author)
await client.send_message(ctx.message.channel, text)
output: ( I want it to send a message to that user, who have no permission administration, and delete his message I dont understand this error, it happeen when I try to send please fix it ty would you fix it for me guys thank you im new here. )
Ignoring exception in on_message
Traceback (most recent call last):
File "C:\Users\cyberx\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\bot.py", line 939, in invoke
await ctx.command.invoke(ctx)
File "C:\Users\cyberx\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\core.py", line 855, in invoke
await self.prepare(ctx)
File "C:\Users\cyberx\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\core.py", line 777, in prepare
if not await self.can_run(ctx):
File "C:\Users\cyberx\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\core.py", line 1087, in can_run
return await discord.utils.async_all(predicate(ctx) for predicate in predicates)
File "C:\Users\cyberx\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\utils.py", line 348, in async_all
for elem in gen:
File "C:\Users\cyberx\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\core.py", line 1087, in <genexpr>
return await discord.utils.async_all(predicate(ctx) for predicate in predicates)
File "C:\Users\cyberx\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\core.py", line 1790, in predicate
raise MissingPermissions(missing)
discord.ext.commands.errors.MissingPermissions: You are missing Administrator permission(s) to run this command.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\cyberx\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\core.py", line 71, in wrapped
ret = await coro(*args, **kwargs)
File "c:\Users\cyberx\Desktop\Paid projects\Discord bot\bot.py", line 25, in clear_error
await client.send_message(ctx.message.channel, text)
AttributeError: 'Bot' object has no attribute 'send_message'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\cyberx\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\client.py", line 343, in _run_event
await coro(*args, **kwargs)
File "c:\Users\cyberx\Desktop\Paid projects\Discord bot\bot.py", line 14, in on_message
await client.process_commands(message)
File "C:\Users\cyberx\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\bot.py", line 976, in process_commands
await self.invoke(ctx)
File "C:\Users\cyberx\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\bot.py", line 943, in invoke
await ctx.command.dispatch_error(ctx, exc)
File "C:\Users\cyberx\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\core.py", line 424, in dispatch_error await injected(ctx, error)
File "C:\Users\cyberx\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\core.py", line 77, in wrapped
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'Bot' object has no attribute 'send_message'
You need to make an error handler, like this:
#<commandname>.error
async def <commandname>_error(self, ctx, error):
if isinstance(error, commands.MissingPermissions): #could be other type of error
await ctx.send(f"Sorry {ctx.author.mention}, you do not have permissions to do that!")
If you are a newcomer, I recommend reading this: https://vcokltfre.dev/tutorial/12-errors/
Also, to delete the trigger just use await ctx.message.delete()
Firstly, the error handler should be commands.MissingPermissions not MissingPermissions.
Secondly, client.send_message() was deprecated in the rewrite.
Thirdly, I don't think you can use discord.py in python 2.7, maybe upgrade to python 3.

errors with content discord.py

#client.command()
#commands.cooldown(1, 5, commands.BucketType.user)
async def say(ctx, *, response):
if "#" in say.content.contains:
await ctx.send("no")
else:
response = response.replace("(", "")
response = response.replace(")", "")
await ctx.send(response)
I'm trying to make it so if you type .say then anything with an # will cancel the command
error message: if "#" in say.content.contains:
AttributeError: 'Command' object has no attribute 'content'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/bot.py", line 903, in invoke
await ctx.command.invoke(ctx)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/core.py", line 859, in invoke
await injected(*ctx.args, **ctx.kwargs)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/core.py", line 94, in wrapped
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'Command' object has no attribute 'content'
Don't use say.content. The variable say isn't the message being typed, it's the function/name of the function.
Try using ctx.message.content instead of say.content

how can I display in the #channel, members with a certain role? (with discord.py)

I'm trying to write a command in my (first) bot that prints in the discord channel all members
in a certain #role (in this it's called "Serf")
this is my command/function
#client.command()
async def snap(ctx):
target = discord.Role.members("Serf")
for person in target:
await ctx.send(person)
but nothing happens and I get this error in the terminal
Ignoring exception in command snap:
Traceback (most recent call last):
File "/home/thonkpad/.local/lib/python3.7/site-packages/discord/ext/commands/core.py", line 83, in wrapped
ret = await coro(*args, **kwargs)
File "Python/thanosBot/bot.py", line 28, in snap
target = discord.Role.members("Serf")
TypeError: 'property' object is not callable
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/thonkpad/.local/lib/python3.7/site-packages/discord/ext/commands/bot.py", line 892, in invoke
await ctx.command.invoke(ctx)
File "/home/thonkpad/.local/lib/python3.7/site-packages/discord/ext/commands/core.py", line 797, in invoke
await injected(*ctx.args, **ctx.kwargs)
File "/home/thonkpad/.local/lib/python3.7/site-packages/discord/ext/commands/core.py", line 92, in wrapped
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: 'property' object is not callable
The problem is you're calling the actual discord.Role object itself and not finding the Role object of the specific role you want. You could do something like this:
#client.command()
async def snap(ctx):
role = discord.utils.get(ctx.message.guild.roles, name="Serf")
target = role.members
for person in target:
await ctx.send(person.name)
target will be a list of discord.Member objects

Categories