Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
499 views
in Technique[技术] by (71.8m points)

python - Log all messages ever sent in a specific channel discord.py

I was wondering if there was a way to log every single message ever sent in one specific discord server and log them to a txt file. I have this code so far, but I think it only logs new messages being sent. I need it to log all.

@bot.event
async def on_message(message):
  await bot.process_commands(message)
  if (message.channel.id == '655864692333477926'):
  sentmsg2 = str(message.content)
  f=open("speclog.txt", "a+")
  for i in range(1):
   f.write(sentmsg2 + "
")

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

You will need to make a for loop in your code that reads the message history. Here's how.

counter = 0
async for message in channel.history(limit=LIMIT_HERE):
    if message.author == client.user:
        counter += 1
        # Write the 'message' variable in to the file

You can find more information here. https://discordpy.readthedocs.io/en/latest/api.html#discord.TextChannel.history


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...