获取用户使用discord.py发送的最后一条消息?

2024-02-16

我想知道是否有办法让机器人使用 Python 中的discord.py 获取用户在服务器聊天中发送的最后一条消息?多谢


旧答案discord.py async(重写前)

Use log_froms http://discordpy.readthedocs.io/en/latest/api.html#discord.Client.logs_from从频道获取消息。

and use get_all_channels http://discordpy.readthedocs.io/en/latest/api.html#discord.Client.get_all_channels通过所有渠道。

然后在结果中搜索作者的最新版本。您必须在每个渠道中浏览合理的数量,直到找到该人的消息,然后停止。比较每个通道的第一个以获得最新时间。

为了将来获得更好的帮助,请考虑加入“discord api”discord 服务器 https://discord.gg/discord-api

编辑:与discord.py重写兼容的方法(+1.0)

您可以使用channel.history() https://discordpy.readthedocs.io/en/v1.0.0/api.html#discord.TextChannel.history获取频道的历史记录。默认情况下,它仅从频道中获取最新的 100 条消息。您可以通过以下方式增加此限制limit关键词。 (例如。channel.history(limit = 200)

您可以将其与find https://discordpy.readthedocs.io/en/v1.0.0/api.html#discord.AsyncIterator.find异步迭代器仅获取具有您正在查找的 id 的用户的消息await channel.history().find(lambda m: m.author.id == users_id).

然后,您需要循环遍历服务器中的每个文本通道,并通过将它们与先前获取的消息进行比较并保留较新创建的消息来查找通道中的最新消息。

查找用户最新消息的示例命令。

@commands.command()
async def lastMessage(self, ctx, users_id: int):
    oldestMessage = None
    for channel in ctx.guild.text_channels:
        fetchMessage = await channel.history().find(lambda m: m.author.id == users_id)
        if fetchMessage is None:
            continue


        if oldestMessage is None:
            oldestMessage = fetchMessage
        else:
            if fetchMessage.created_at > oldestMessage.created_at:
                oldestMessage = fetchMessage

    if (oldestMessage is not None):
        await ctx.send(f"Oldest message is {oldestMessage.content}")
    else:
        await ctx.send("No message found.")

在我的测试中,这是一个相当慢的操作,因为必须发出许多不和谐的请求,但应该可以工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取用户使用discord.py发送的最后一条消息? 的相关文章

  • Python - 如何确定解析的 XML 元素的层次结构级别?

    我正在尝试使用 Python 解析 XML 文件中具有特定标记的元素并生成输出 excel 文档 该文档将包含元素并保留其层次结构 我的问题是我无法弄清楚每个元素 解析器在其上迭代 的嵌套深度 XML 示例摘录 3 个元素 它们可以任意嵌套
  • 重新分配唯一值 - pandas DataFrame

    我在尝试着assign unique值在pandas df给特定的个人 For the df below Area and Place 会一起弥补unique不同的价值观jobs 这些值将分配给个人 总体目标是使用尽可能少的个人 诀窍在于这
  • 如何使用 Boto3 启动具有 IAM 角色的 EC2 实例?

    我无法弄清楚如何使用指定的 IAM 角色在 Boto3 中启动 EC2 实例 以下是迄今为止我如何成功创建实例的一些示例代码 import boto3 ec2 boto3 resource ec2 region name us west 2
  • 根据 Pandas 中的列表选择数据框行的子集

    我有一个数据框df1并列出x In 22 import pandas as pd In 23 df1 pd DataFrame C range 5 B range 10 20 2 A list abcde In 24 df1 Out 24
  • pandas.read_csv 将列名移动一倍

    我正在使用位于的 ALL zip 文件here http www fec gov disclosurep PDownload do 我的目标是用它创建一个 pandas DataFrame 但是 如果我跑 data pd read csv
  • gedit 插件错误 - 找不到插件加载器“python3”

    我尝试在 ubuntu 14 04LTS 上的 gedit 3 10 4 中添加一些插件 当我尝试在 gedit 中激活这些插件时出现一些错误 gedit 20686 libpeas 警告 初始化Python插件加载器时出错 PyGObje
  • 谷歌应用程序引擎中的图像 exif 数据

    在谷歌应用程序引擎开发环境中我无法获取 exif 数据 我从这里跟随指南https developers google com appengine docs python images imageclass https developers
  • matplotlib改变jpg图像颜色

    我正在使用 matplotlib imread 函数从文件系统读取图像 但是 当显示 jpg 图像时 它会更改这些图像的颜色 Python 3 5 Anaconda3 4 3 matplotlib2 0 reading 5 color im
  • SWIG Python C++ 结构作为输入/输出参数

    老实说 我在这个网站上读了很多关于struct主题 但我需要你的帮助 我有 C 风格的结构 struct Time uint16 t year year with four digits like 2016 uint8 t month 1
  • django 删除模板中的硬编码 URL

    我知道在模板文件中我可以包含此代码 它将返回链接列表 for q in all ul li a href q question text a li ul endfor 现在 django 将搜索名称 detail in the urls p
  • alembic“无法创建进程。”在Windows7中

    我已经成功安装了python2 7 pip env和alembic 我尝试在命令提示符中运行命令 alembic init elembic 但没有成功 它显示消息 无法创建进程 有人知道为什么以及如何解决吗 您可能会看到这是由于pip bu
  • TypeError:使用一组 UDT 创建 Cassandra Python 驱动程序模型时不可散列的类型 UserType

    此问题与 Datastax Cassandra python 驱动程序的对象映射器有关 当尝试创建一个包含 UDT 集 作为字段的模型时 我收到错误 类型错误 不可散列的类型 UdtClassName 但是 我可以创建具有一组基本类型 例如
  • 如何在 Google App Engine (GAE) 上使用 bcrypt? [复制]

    这个问题在这里已经有答案了 我发现了一个 python 的 bcrypt 库 它似乎非常容易使用 比特加密 1 0 1 https pypi python org pypi bcrypt 1 0 1 安装它并在我的本地计算机上测试 hell
  • 如何取消选择单选按钮 tkinter

    我看过几个在线教程 它们似乎都不能正常工作 我需要在单击清除按钮后取消选择单选按钮 deselect 方法不执行任何操作 清除文本和输入框工作正常 请协助 谢谢你 from tkinter import class Example Fram
  • pyinstaller错误:OSError:[WinError 6]句柄无效

    该文件使用终端命令获取 wifi 密码netsh wlan show profiles我之前使用 pyinstaller 创建了一些 exe 它们工作得很好 代码 import subprocess import time import s
  • 从Python调用和控制GDB

    我正在运行一个 Python GUI 应用程序 我想从中调用和控制GDB 比如加载可执行文件 设置断点等 我看到GDB有一个命令行界面 可以通过向GDB进程发送字符串来使用它 但我想用Python方式来做 有没有gdb py 我看到 arc
  • 通过命令行使用 Python 进行交互式绘图

    我正在尝试使用 Python 以及 numpy 和 matplotlib 库进行一些数据分析和绘图并查看我的绘图 相应地调整我的代码等 所以我需要能够检查绘图 但是 从命令行运行脚本会导致该图形暂时弹出然后立即消失 另一个答案建议添加一个r
  • 关于“评估是邪恶的”和“同意成年人”[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我看到很多人说 评估是邪恶的 危险的 不安全的 https stackoverflow com questions 1832940 is usi
  • 在张量流中保存模型

    Tensorflow 允许我们使用 tf train write graph 方法保存 加载模型的结构 以便我们可以在将来恢复它以继续我们的训练 但是 我想知道这是否有必要 因为我可以创建一个模块 例如 GraphDefinition py
  • 如何调用 Numpy 数组中的元素?

    这看起来是一个非常简单的问题 但我找不到答案 如何调用 Numpy 数组中的元素 import numpy as np arr np array 1 2 3 4 5 6 7 8 9 10 print arr 0 0 上面的代码不起作用 只需

随机推荐