I’m having issues with a very bare bones level system with my discord bot, here’s the error and code:
import discord
from discord.ext import commands,tasks
@client.event
async def on_message(message, member):
if message.author.bot == False:
if xp >= 250:
level =+ 1
await ctx.send(f'{member.mention} Has leveled up')
if level >= 12:
await member.add_roles(discord.Object(id='800794726935822358'))
elif level >= 22:
await member.add_roles(discord.Object(id='800794900370292746'))
else:
xp =+ 1
The error:
Ignoring exception in on_message
Traceback (most recent call last):
File "C:UsersJeremyAppDataLocalProgramsPythonPython310libsite-packagesdiscordclient.py", line 343, in _run_event
await coro(*args, **kwargs)
TypeError: on_message() missing 1 required positional argument: 'member'
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.
@client.event
async def on_message(message):
member = message.author
if message.author.bot == False:
if xp >= 250:
level =+ 1
await message.reply(f'{member.mention} Has leveled up')
if level >= 12:
await member.add_roles(discord.Object(id='800794726935822358'))
elif level >= 22:
await member.add_roles(discord.Object(id='800794900370292746'))
else:
xp =+ 1