首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何检查X分钟内是否未发送消息?(discord.py)

在discord.py中,可以通过使用discord.ext.tasks.loop装饰器和discord.utils.utcnow()函数来检查X分钟内是否未发送消息。下面是一个完整的示例代码:

代码语言:txt
复制
import discord
from discord.ext import tasks
from discord.utils import utcnow

client = discord.Client()

@tasks.loop(minutes=X)
async def check_inactive():
    last_message_time = None
    for channel in client.get_all_channels():
        if isinstance(channel, discord.TextChannel):
            async for message in channel.history(limit=1):
                last_message_time = message.created_at
                break
    if last_message_time is not None and utcnow() - last_message_time > timedelta(minutes=X):
        print(f"No messages sent in the last {X} minutes.")

@client.event
async def on_ready():
    print(f"We have logged in as {client.user}")

check_inactive.start()
client.run('YOUR_BOT_TOKEN')

在上述代码中,X代表要检查的时间间隔,单位为分钟。check_inactive函数使用discord.ext.tasks.loop装饰器来创建一个循环任务,每隔X分钟执行一次。在任务中,通过遍历所有的文本频道,获取每个频道的最新消息的创建时间。如果最新消息的创建时间与当前时间的差值超过X分钟,则打印出相应的提示信息。

请注意,上述代码仅为示例,你可以根据实际需求进行修改和优化。此外,你还可以根据需要添加其他功能,如发送提醒消息或执行其他操作。

腾讯云相关产品和产品介绍链接地址:

请注意,以上链接仅供参考,具体产品选择应根据实际需求和情况进行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

聊天IM的时间戳显示规则

###时间戳的显示规则 一天消息显示为:“昨天 时:分” 二天至七天显示为:“星期X 时:分” 当大于7天时显示为:“YYYY年XX日时:分” 时、分不足二位时,前面用0补齐,月、日不足二位时不补位...会出现一种情况,当5分钟消息很频繁而导致消息量达到100条,那么这一千条数据中间是没有任何时间戳的。如果退出聊天界面再重新进入时,参考第一条规则。 示例截图: ?...会出现一种情况,就是向上拉取消息时,你会遇到同一分钟发送消息各有一个时间戳,而且时间戳是相同的。出现的原因是消息分属在二页了 示例截图如下: ?...删除完消息检查当前消息数,少于一页时自动再加载上一页数据,直至没有消息可供加载。 示例截图如下(第一张图是正常的,第二张图是非正常的,退出聊天重新进入或等5分钟之后便可恢复正常): ? ?...消息删除后,需要判断当前消息数量是否够一页(20条),不够就再向上加载一页数据(20条); 在点击删除时,一次性进行删除操作,避免遍历影响性能。 示例截图如下: ?

4.5K41

延迟队列MQ

延迟队列使用场景 1.订单在十分钟之内支付则自动取消 2.新创建的店铺,如果在十天都没有上传过商品,则自动发送消息提醒。 3.用户注册成功后,如果三天没有登陆则进行短信提醒。...5.预定会议后,需要在预定的时间点前十分钟通知各个与会人员参加会议 这些场景都有一个特点,需要在某个事件发生之后或者之前的指定时间点完成某一项任务,如:发生订单生成事件,在十分钟之后检查该订单支付状态...如果数据量比较少,确实可以这样做,比如:对于“如果账单一周支付则进行自动结算”这样的需求,如果对于时间不是严格限制,而是宽松意义上的一周,那么每天晚上跑个定时任务检查一下所有支付的账单,确实也是一个可行的方案...但对于数据量比较大,并且时效性较强的场景,如:“订单十分钟支付则关闭“,短期内支付的订单数据可能会有很多,活动期间甚至会达到百万甚至千万级别,对这么庞大的数据量仍旧使用轮询的方式显然是不可取的,很可能在一秒无法完成所有订单的检查...),而第二种方式,消息即使过期,也不一定会被马上丢弃,因为消息是否过期是在即将投递到消费者之前判定的,如果当前队列有严重的消息积压情况,则已过期的消息也许还能存活较长时间;另外,还需要注意的一点是,如果不设置

1.1K20

浅析RabbitMQ的延迟队列

2、延迟队列使用场景 订单在十分钟之内支付则自动取消 新创建的店铺,如果在十天都没有上传过商品,则自动发送消息提醒 用户注册成功后,如果三天没有登陆则进行短信提醒 用户发起退款,如果三天没有得到处理则通知相关运营人员...预定会议后,需要在预定的时间点前十分钟通知各个与会人员参加会议 这些场景都有一个特点,需要在某个事件发生之后或者之前的指定时间点完成某一项任务,如:发生订单生成事件,在十分钟之后检查该 订单支付状态,...如果数据量比较少,确实可以这样做,比如:对于“如果账单一周支付则进行自动结算”这样的需求,如果对于时间 不是严格限制,而是宽松意义上的一周,那么每天晚上跑个定时任务检查一下所有支付的账单,确实也是一个可行的方案...但对于数据 量比较大,并且时效性较强的场景,如:“订单十分钟支付则关闭“,短期内支付的订单数据可能会有很多,活动期间甚至会达到百 万甚至千万级别,对这么庞大的数据量仍旧使用轮询的方式显然是不可取的...,消息可能并不会按时“死亡“,因为 RabbitMQ 只会检查第一个消息是否过期,如果过期则丢到死信队列,如果第一个消息的延时时长很长,而第二个消息的延时时长很短,第二个消息并不会优先得到执行。

34810

【RabbitMQ】一文带你搞定RabbitMQ延迟队列

考虑一下以下场景: 订单在十分钟之内支付则自动取消。 新创建的店铺,如果在十天都没有上传过商品,则自动发送消息提醒。 账单在一周支付,则自动结算。...这些场景都有一个特点,需要在某个事件发生之后或者之前的指定时间点完成某一项任务,如:发生订单生成事件,在十分钟之后检查该订单支付状态,然后将支付的订单进行关闭;发生店铺创建事件,十天后检查该店铺上新商品数...,然后通知上新数为0的商户;发生账单生成事件,检查账单支付状态,然后自动结算支付的账单;发生新用户注册事件,三天后检查新注册用户的活动数据,然后通知没有任何活动记录的用户;发生退款事件,在三天之后检查该订单是否已被处理...,如仍未被处理,则发送消息给相关运营人员;发生预定会议事件,判断离会议开始是否只有十分钟了,如果是,则通知各个与会人员。...但对于数据量比较大,并且时效性较强的场景,如:“订单十分钟支付则关闭“,短期内支付的订单数据可能会有很多,活动期间甚至会达到百万甚至千万级别,对这么庞大的数据量仍旧使用轮询的方式显然是不可取的,很可能在一秒无法完成所有订单的检查

80531

RabbitMQ之延迟队列(整合SpringBoot)

2、延迟队列使用场景 订单在十分钟之内支付则自动取消 新创建的店铺,如果在十天都没有上传过商品,则自动发送消息提醒。 用户注册成功后,如果三天没有登陆则进行短信提醒。...预定会议后,需要在预定的时间点前十分钟通知各个与会人员参加会议 这些场景都有一个特点,需要在某个事件发生之后或者之前的指定时间点完成某一项任务,如: 发生订单生成事件,在十分钟之后检查该订单支付状态,...如果 数据量比较少,确实可以这样做,比如:对于“如果账单一周支付则进行自动结算”这样的需求, 如果对于时间不是严格限制,而是宽松意义上的一周,那么每天晚上跑个定时任务检查一下所有支 付的账单,确实也是一个可行的方案...但对于数据量比较大,并且时效性较强的场景,如:“订单十 分钟支付则关闭“,短期内支付的订单数据可能会有很多,活动期间甚至会达到百万甚至千万 级别,对这么庞大的数据量仍旧使用轮询的方式显然是不可取的...,很可能在一秒无法完成所有订单 的检查,同时会给数据库带来很大压力,无法满足业务要求而且性能低下。

70631

RabbitMQ 延迟队列

延迟队列使用场景: 订单在十分钟之内支付则自动取消 新创建的店铺,如果在十天都没有上传过商品,则自动发送消息提醒 用户注册成功后,如果三天没有登陆则进行短信提醒 用户发起退款,如果三天没有得到处理则通知相关运营人员...预定会议后,需要在预定的时间点前十分钟通知各个与会人员参加会议 这些场景都有一个特点,需要在某个事件发生之后或者之前的指定时间点完成某一项任务,如: 发生订单生成事件,在十分钟之后检查该订单支付状态,...如果数据量比较少,确实可以这样做,比如:对于「如果账单一周支付则进行自动结算」这样的需求, 如果对于时间不是严格限制,而是宽松意义上的一周,那么每天晚上跑个定时任务检查一下所有支付的账单,确实也是一个可行的方案...但对于数据量比较大,并且时效性较强的场景,如:「订单十分钟支付则关闭」,短期内支付的订单数据可能会有很多,活动期间甚至会达到百万甚至千万级别,对这么庞大的数据量仍旧使用轮询的方式显然是不可取的,很可能在一秒无法完成所有订单的检查...TTL 的方式,消息可能并不会按时「死亡」 因为 RabbitMQ 只会检查第一个消息是否过期,如果过期则丢到死信队列, 如果第一个消息的延时时长很长,而第二个消息的延时时长很短,第二个消息并不会优先得到执行

60120

组员老是忘记打卡,我开发了一款小工具,让全组三个月全勤!

按照上述两个原因,我们要实现的提醒工具必须包含两个功能: 检测用户是否打卡,打卡则提醒,已打卡不提醒。 对打卡用户循环检测,重复提醒,直到打卡为止。...我们用到的钉钉 API 主要有以下几个: 获取凭证 获取用户 ID 检查打卡状态 群消息推送 @某人推送 在使用钉钉 API 之前,首先要确认有公司级别的钉钉账号(使用过钉钉打卡功能一般就有公司账号)...发送提醒通知 在钉钉中最常用的消息推送方式是:在群聊中添加一个机器人,向这个机器人的 webhook 地址发送消息,即可实现自定义推送。...发送之后会在钉钉群收到消息,效果如下: 综合代码实现 前面几步创建了钉钉应用,获取了打卡状态,并用机器人发送了群通知。现在将这些功能结合起来,写一个检查考勤状态,并对打卡用户发送提醒的接口。...循环提醒的实现思路是,在某个时间段,每隔几分钟调用一次接口。如果检测到打卡的状态,就会循环提醒。

1.5K20

RabbitMQ 延迟消息实战

---现实生活中有一些场景需要延迟或在特定时间发送消息,例如智能热水器需要 30 分钟后打开,支付的订单或发送短信、电子邮件和推送通知下午 2:00 开始的促销活动。...args.put("x-message-ttl", 10000);//当queue.normal中的消息过期时,将发送到exchange.dlxargs.put("x-dead-letter-exchange...由于队列 queue.normal 设置了过期时间为 10s,在这 10s 没有消费者消费这条消息,那么判定这条消息为过期。...参考下图,为了简化说明,这里只设置了 5 秒、10 秒、30 秒、1 分钟这四个等级。根据应用需求的不同,生产者在发送消息的时候通过设置不同的路由键,以此将消息发送到与交换器绑定的不同的队列中。...检查延迟消息一旦我们在消费者端收到消息,我们如何判断消息是否被延迟? x-delay 消息头由插件保留。如果您以 5000 毫秒的延迟发送消息,消费者会发现 x-delay 标头设置为 5000。

51170

RabbitMQ 进阶使用之延迟队列 → 订单在30分钟之内支付则自动取消

expiration,那该如何判定消息是否过期了呢?...队列的 TTL 这里针对的是队列,而非队列中的消息,大家别和 消息的 TTL 搞混了 通过参数 x-expires 可以设置队列被自动删除前处于使用状态的时长,单位是毫秒,不能设置为 0 使用状态需要满足三点...中,队列设置了 x-message-ttl 为 3000 毫秒,这段时长队列上没有消费者消费这条消息消息过期。...,并不想让消费者立即拿到消息,而是等待特定时长后,消费者才拿到消息进行消费 延迟队列的使用场景有很多,例如: 订单系统中,下单完成之后 30 分钟完成支付,否则取消订单 用户注册成功后,如果三天没有登陆则进行短信提醒...,该时长队列一直处于使用状态则会被删除;通过队列参数 x-expires 来设置 死信队列 绑定到死信交换器(DLX)上的队列就是死信队列 DLX 能够保证异常的情况下消息不会丢失,后续通过分析死信队列中的消息

18320

一篇文章搞懂RabbitMQ 延迟消息

现实生活中有一些场景需要延迟或在特定时间发送消息,例如智能热水器需要 30 分钟后打开,支付的订单30分钟后取消或发送短信、电子邮件和推送通知下午 2:00 开始的促销活动等。...args.put("x-message-ttl", 10000); //当queue.normal中的消息过期时,将发送到exchange.dlx args.put("x-dead-letter-exchange...由于队列 queue.normal 设置了过期时间为 10s,在这 10s 没有消费者消费这条消息,那么判定这条消息为过期。...参考下图,为了简化说明,这里只设置了 5 秒、10 秒、30 秒、1 分钟这四个等级。根据应用需求的不同,生产者在发送消息的时候通过设置不同的路由键,以此将消息发送到与交换器绑定的不同的队列中。...这告诉交换器我们希望它在路由消息、创建绑定等时具有什么样的行为 检查延迟消息 一旦我们在消费者端收到消息,我们如何判断消息是否被延迟?x-delay 消息头由插件保留。

70730

RabbitMQ消息积压

消息积压线上有时因为发送发送消息速度过快,或者消费方处理消息过慢,可能会导致broker积压大量消费消息。...消息数据格式变动或消费者程序有bug,导致消费者一直消费不成功,也可能导致broker积压大量消费消息。...例如10分钟完成订单支付,支付完成后才会通知下游服务进行进一步的营销补偿。往MQ发一个延迟1分钟消息,消费到这个消息后去检查订单的支付状态,如果订单已经支付,就往下游发送下单的通知。..._10s,topic_2h,然后通过定时器进行轮训消费这些topic,查看消息是否到期,如果到期就把这个消息发送到具体业务处理的topic中,队列中消息越靠前的到期时间越早,具体来说就是定时器在一次消费过程中...,对消息发送时间做判断,看下是否延迟到对应时间了,如果到了就转发,如果还没到这一次定时任务就可以提前结束了。

9910

RabbitMQ---延迟队列,整合springboot

使用场景 1.订单在十分钟之内支付则自动取消 2.新创建的店铺,如果在十天都没有上传过商品,则自动发送消息提醒。 3.用户注册成功后,如果三天没有登陆则进行短信提醒。...5.预定会议后,需要在预定的时间点前十分钟通知各个与会人员参加会议 这些场景都有一个特点,需要在某个事件发生之后或者之前的指定时间点完成某一项任务, 如: 发生订单生成事件,在十分钟之后检查该订单支付状态...如果数据量比较少,确实可以这样做, 比如:对于“如果账单一周支付则进行自动结算”这样的需求,如果对于时间不是严格限制,而是宽松意义上的一周,那么每天晚上跑个定时任务检查一下所有支付的账单,确实也是一个可行的方案...但对于数据量比较大,并且时效性较强的场景,如:“订单十分钟支付则关闭“,短期内支付的订单数据可能会有很多,活动期间甚至会达到百万甚至千万级别,对这么庞大的数据量仍旧使用轮询的方式显然是不可取的,很可能在一秒无法完成所有订单...TTL 的方式,消息可能并不会按时“死亡“,因为 RabbitMQ 只会检查第一个消息是否过期,如果过期则丢到死信队列,如果第一个消息的延时时长很长,而第二个消息的延时时长很短,第二个消息并不会优先得到执行

60810

【译】如何调整ApacheFlink®集群的大小How To Size Your Apache Flink® Cluster: A Back-of-the-Envelope Calculation

实际上,运营商不会以67 MB / s的恒定速率发送数据,而是每分钟最多可用带宽几秒钟。...与窗口运算符类似,检查点具有突发模式,每分钟一次,它会尝试将其数据全速发送到外部存储。 检查点导致对RocksDB的额外状态访问(在此示例中位于网络连接磁盘上)。...自Flink 1.3以来,RocksDB状态后端支持增量检查点,减少了每个检查点上所需的网络传输,从概念上讲,仅发送自上一个检查点以来的“diff”,但此示例中使用此功能。...这为我所掩盖的复杂性保留了大约40%的网络容量,例如网络协议开销,从检查点恢复时事件重放期间的高负载,以及由数据偏差导致的集群不均衡的负载平衡。...对于40%是否是适当的余量,没有一个通用的答案,但这个算术应该给你一个很好的起点。 尝试上面的计算,更换机器数量,key数量或每秒消息数,以便选择要考虑的值,然后根据预算和运营因素进行平衡。

1.7K10

Meta 如何将缓存一致性提高到 99.99999999

例如:如果 Polaris 收到一个失效事件(x=4 @ version 4),那么它将作为客户端检查所有缓存副本以验证是否有违规的情况。...Polaris 会报告特定时间范围的不一致,如 1 分钟、5 分钟或 10 分钟。...假如 Polaris 接收到(x = 4 @ version 4)的失效消息。但是当 Polaris 检查缓存时,却找不到 x 的数据条目,它应该将此标记为不一致。这种情况下有两种可能。...所以,我们不能向系统发送太多的查询。 为了解决这个问题,Polaris 会延迟执行此类检查,并在不一致的样本超过设置的阈值(比如 1 分钟或 5 分钟)时才发起数据库调用。...Polaris 给出的指标是“在 M 分钟 N 个 9 的缓存写入是一致的”。所以现在,Polaris 提供了一个指标:在 5 分钟 99.99999999 的缓存是一致的。

11210

RabbitMQ

7.2 延迟队列使用场景 订单在十分钟之内支付则自动取消 新创建的店铺,如果在十天都没有上传过商品,这自动发送消息提醒 用户注册成功后,如果三天没有登陆则进行短信提醒 用户发起退款,如果三天之内没有得到处理则通知相关运营人员...预定会议后,需要在预定的时间点前十分钟通知各个与会人员参加会议 这些场景都有一个特点,需要在某个事件发生之后或者之前的指定时间点完成某一项任务,如:发生订单生成事件,在十分钟之后检查改订单支付状态,然后将支付的订单进行关闭...如果数据量比较少,确实可以这样做,比如:对于“如果账单一周支付则进行自动结算”这样的需求,如果对于时间不是严格限制,而是宽松意义上的一周,那么每天晚上跑个定时任务检查一下所有支付的账单,确实也是一个可行的方案...但对于数据量比较大,并且时效性较强的场景,如:“订单十分钟支付则关闭“,短期内支付的订单数据可能会有很多,活动期间甚至会达到百万甚至千万级别,对这么庞大的数据量仍旧使用轮询的方式显然是不可取的,很可能在一秒无法完成所有订单的检查...TTL的方式,消息可能并不会按时 “死亡”,因为 RabbitMQ 只会检查第一个消息是否过期,如果过期则会丢到死信队列。

1.7K50

订单服务以及优惠券服务及rabbitmq(7)-1024电商平台项目技术选择和创 建聚合工程项目【工业级PaaS云平台+SpringCloudAlibaba+JDK11综合项目实战】

Linux服务器检查防火墙是否关闭 云服务器检查网络安全组是否开放端口 CentOS 7 以上默认使用的是firewall作为防火墙 查看防火墙状态 firewall-cmd --state 停止firewall...Consumer 进行消费,该消息即定时消息 使用场景 通过消息触发一些定时任务,比如在某一固定时间点向用户发送提醒消息 用户登录之后5分钟给用户做分类推送、用户多少天登录给用户做召回推送;...消息生产和消费有时间窗口要求:比如在天猫电商交易中超时支付关闭订单的场景,在订单创建时会发送一条 延时消息。...这条消息将会在 30 分钟以后投递给消费者,消费者收到此消息后需要判断对应的订单是否已完成支付。 如支付未完成,则关闭订单。...【推荐】清空购物车逻辑设计方案二 直接调用清空-MQ延迟消息(假如订单创建失败则购物车会丢失数据) 解决方案:类似库存解锁和优惠券释放一样的思路(购物车这边做) 延迟消息可以1分钟或者5分钟 直接查询订单是否存在即可

1.5K20

golang 使用 rabbitmq 延迟队列

你在实际业务中是否有遇到过下面这样的场景: 订单十分钟没有支付,自动取消 用户注册成功后无任何操作,一天后自动提醒 预定票之后,在出发之前的一天自动提醒用户 这样类似的场景经常会发生在实际的业务中,它们总有一个共性...为什么使用延迟队列 我们以 订单十分钟过期 场景举例: 方案 1:为当前订单创建一个定时器,定时器时间到了之后自动去查询当前订单状态,如果没有支付,则进行取消操作 方案 2:设定一个总的定时器,每一分钟检查一次...这样的设计就好像 golang timer 的旧版本设计类似(挖个坑有机会写一篇 golang timer 分析) rabbitmq 要如何使用 我们知道 mq 可不就是消息从一端发送,另一端进行接收嘛...我们将需要延迟的消息设定需要延迟的时间,也就是这个消息的最大存活时间(TTL),然后发送到普通队列中 然后因为普通队列中没有消费者,所以只有静静的等待消息超时 消息超时后,经过死信交换机,发送到对应的死信队列中...,只需要将发送消息的部分,在消息的 header 中加入 x-delay 字段表示当前消息的 TTL 就可以了,也就是设定延迟时间,注意单位为毫秒 package producer import (

1.1K20

发送钉钉消息 Shell 脚本

主要原因还是懒得半夜监控~ 变更记录 Version 0.0.1 2020/06/08 发送钉钉消息,支持 text,markdown 两种类型消息 选项 sh send-ding.sh [options...使用场景 定时监控跑批结果文件生成,发送汇总信息 由于跑批任务大概在凌晨 2:15 分左右完成,故设置 2:20 开始检测,每 30 分钟(可调整)钉钉告警一次未获取到,之后一直检测,直到检测到文件生成...TILE="预对账汇总信息\n" # 计数 i=1 # 循环检查文件是否存在,SLEEP_TIME 秒检查一次,总共检查 COUNT*SLEEP_TIME 秒 while [ $i -le ${COUNT...SEND_DING_SH}" -a "${ACCESS_TOKEN}" -t markdown -T "${TILE}" -c "# 【FAIL】经过 ${COUNT}*${SLEEP_TIME} 秒后,仍然检查到预对账文件...}' else # 判断是否多个手机号 result=$(echo "${at}" | grep ",") # N 个手机号 if [ "X${result}"

1.8K20

『假如我是面试官』RabbitMQ我会这样问!

p:生成者 X:交换机 C1、C2:消费者 红色部分:quene,消息队列 3.4 路由模型(routing) ? 这种模型消费者发送消息,不同类型的消息可以由不同的消费者去消费。...因此RabbitMQ出现消息丢失的情况有四个 分别是 消息生产者没有成功将消息发送到MQ导致消息丢失 交换机路由到消息队列导致消息丢失 消息在MQ中时,MQ发生宕机导致消息丢失 消费者消费消息时出现异常导致消息丢失...如何保证消息不重复消费(如何保证消息的幂等性) 消息重复的原因有两个: 生产时消息重复 由于生产者发送消息给MQ,在MQ确认的时候出现了网络波动,生产者没有收到确认,实际上MQ已经接收到了消息。...消息大量堆积应该怎么处理 消息堆积的原因有两个 网络故障,消费者无法正常消费 消费方消费后未进行ack确认 解决方案如下: 检查并修复消费者故障,使其正常消费 编写临时程序将堆积的消息发送到容量更大的MQ...如果我有一笔订单,30分钟支付则关闭订单,使用RabbitMQ如何来实现 RabbitMQ可以使用死信队列来实现延时消费,用户下单之后,将订单信息投递到消息队列中,并且设置消息过期时常为30分钟

43830

RabbitMQ消息中间件 高级篇二 高并发情况下保障消息投递可靠性

思考:在上一篇中可靠性投递,在高并发的场景下是否合适? 其实在上一篇文章中,我们实际上对数据库操作了两次:业务数据入库和消息信息入库。这中对数据库多次操作的,如果在高并发场景下会出现问题的。...所以我们可以使用二种情况:消息的延迟投递,做二次确认,回调检查。 本文主要内容: 消息的延迟投递做二次确认,回调检查。...如延迟5分钟(具体延迟多少时间,根据实际业务); Setp3:     下游服务有一个用于接收上有服务发送消息的消费者:Listener Consume。当消费者接收到生产者发送消息后进行业务处理。...RPC方式发起一个RPC ReSend Command请求到上游服务,询问此条消息下游正常处理。...下节预告: 1:幂等性是什么 2:在海量订单产生的业务高峰期,如何避免消息的重复消费问题? 3:业界主流的幂等性操作都有哪些?

84220
领券