Discord Python Bot Online Member werden nicht erkannt?
Mein Code:
import discord
intents = discord.Intents.default()
intents.members = True
class MyClient(discord.Client):
async def on_message(self, message)
if message.content.startswith("*online"):
members = client.guilds[0].members
for i in members:
if i.status == discord.Status.offline:
members.remove(i)
for i in members:
print(str(i))
client = MyClient(guild_subscriptions=True, intents=intents)
client.run(token)
Beim print in der Konsole werden nun alle member angezeigt, warum?
2 Antworten
Wahrscheinlich, weil der Offlinestatus der Member nicht gelesen werden kann und null sind. Null ist nicht offline.
Schau nach, dass der Bot alle Intents hat und du diese auch dem Bot mitteilst.
Der ist Admin, im Developer Portal auch alles nötige on, und anfangs hat der sogar alle online Members angezeigt, nur leider auch einige, die off waren (warum auch immer)...
Ich weiß nicht, wie gnädig Python da genau ist, aber in anderen Programmiersprachen ist es meist eine Todsünde, die Struktur des Arrays zu verändern, während man drüber iteriert.
Mach dir im Loop lieber eine neue Liste aus allen Online-Mitgliedern und schau, was passiert.
Also ich sollte statt der Liste members lieber eine andere nehmen?!