So I'm getting an issue here where I'm trying to make a status check command to check if a user is online, offline, idle, or dnd, if they are on mobile or desktop, and maybe even their custom status. However, my main problem is seeing if a user is online/offline or whatever. It seems to always return 'offline' even though I know I'm not offline. Here's my code (currently its just printing to console to see)
@client.command(name="status")
async def status(ctx, user: discord.Member=None):
if not user:
user = ctx.message.author
print(user)
print(user.raw_status)
However when I initiate this command it always returns 'offline', and I haven't been able to figure out why. I've tried: user.status
, user.raw_status
, user.desktop_status
, and just in case it was being weird or I didn't understand it, mobile_status
(I'm on desktop.) If anyone has a fix to this please let me know, thanks!
If you haven't added intents to your bot, then you cannot deal with user statuses in a server. Head to "https://discord.com/developers/applications//bot" and under "Privileged Gateway Intents" tick "PRESENCE INTENT" and "SERVER MEMBERS INTENT". This will allow the bot to request presence data from users in the server. In your bot's code, add
from discord import Intents
client = commands.Bot(command_prefix=YOUR_PREFIX, intents = Intents.all())