I’m having issues with a very bare bones level system with my discord bot, here’s the error and code:
JavaScript
x
16
16
1
import discord
2
from discord.ext import commands,tasks
3
4
@client.event
5
async def on_message(message, member):
6
if message.author.bot == False:
7
if xp >= 250:
8
level =+ 1
9
await ctx.send(f'{member.mention} Has leveled up')
10
if level >= 12:
11
await member.add_roles(discord.Object(id='800794726935822358'))
12
elif level >= 22:
13
await member.add_roles(discord.Object(id='800794900370292746'))
14
else:
15
xp =+ 1
16
The error:
JavaScript
1
6
1
Ignoring exception in on_message
2
Traceback (most recent call last):
3
File "C:UsersJeremyAppDataLocalProgramsPythonPython310libsite-packagesdiscordclient.py", line 343, in _run_event
4
await coro(*args, **kwargs)
5
TypeError: on_message() missing 1 required positional argument: 'member'
6
Advertisement
Answer
What @larsks said in the comment. Only pass message
as a parameter for on_message
. To get the member, instead do:
member = message.author
This sets the member
variable to the author of the message.
JavaScript
1
16
16
1
@client.event
2
async def on_message(message):
3
4
member = message.author
5
6
if message.author.bot == False:
7
if xp >= 250:
8
level =+ 1
9
await message.reply(f'{member.mention} Has leveled up')
10
if level >= 12:
11
await member.add_roles(discord.Object(id='800794726935822358'))
12
elif level >= 22:
13
await member.add_roles(discord.Object(id='800794900370292746'))
14
else:
15
xp =+ 1
16