【问题标题】:Discord.py: How to print last message on specific channel?Discord.py:如何在特定频道上打印最后一条消息?
【发布时间】:2021-06-26 07:39:16
【问题描述】:

我的代码是这样的,但输出很糟糕

import os
import discord
import asyncio
from discord.ext import tasks, commands
client = discord.Client()


@client.event
async def on_ready():
 print(f'Connected to Discord!')
 channel = client.get_channel(231231321213)
 messages = await channel.history(limit=1).flatten()
 print(messages)
 
 


client.run('token', bot=False)

我的输出:

连接到 Discord! [ author= flags=>] Traceback(最近一次调用最后一次):

文件“C:\Users\cinar\untitled0.py”,第 18 行,在 client.run('Bot Token', bot=False)

文件“D:\Users\cinar\anaconda3\lib\site-packages\discord\client.py”,第 714 行,运行中 _cleanup_loop(循环)

文件“D:\Users\cinar\anaconda3\lib\site-packages\discord\client.py”,第 95 行,在 _cleanup_loop loop.close()

文件“D:\Users\cinar\anaconda3\lib\asyncio\selector_events.py”,第 89 行,关闭 raise RuntimeError("无法关闭正在运行的事件循环")

RuntimeError: 无法关闭正在运行的事件循环

【问题讨论】:

  • “输出很糟糕”是什么意思?结果是什么?预期的结果是什么?看看how to ask
  • 是的,意思是输出我编辑了我的信息
  • 我查看了文档,发现history() 产生Message 不是字符串,也许试试message.content?另外,我刚刚意识到,你为什么需要bot = False?比如,你是在尝试自我机器人吗?
  • 是的,我正在尝试制作 selfbot。我如何使用 message.content 来获取最后的消息字符串?

标签: python discord.py


【解决方案1】:

我认为您正在尝试使用实际的机器人令牌进行自我机器人,我不建议继续这样做,因为自我机器人违反 ToS。但是,如果您真的想这样做,请使用您的电子邮件和密码而不是机器人令牌。我要再次警告你,自我攻击是违反 ToS 的,并且可能会禁止你的帐户,所以这样做需要你自担风险。无论如何,有人已经问过如何以用户身份登录 here.

正如我之前在评论中所说,我查看了 discord.py 文档并发现 history() 正在产生消息。所以也许你应该尝试改用print(message[0].content)

【讨论】:

  • 'messages = await channel.history(limit=1).flatten() print(messages.content)' 我试过这个但我得到一个错误:' AttributeError: 'list' object has no属性'内容''
  • 对不起,我忘了 flatten() 列一个列表,反正我的答案已经更新了。
猜你喜欢
  • 2019-12-28
  • 1970-01-01
  • 2021-07-30
  • 2019-12-28
  • 1970-01-01
  • 2021-07-27
  • 2021-07-28
  • 2019-12-28
  • 1970-01-01
相关资源
最近更新 更多