如何使用discord.py消除DM中的反应

2024-01-20

我想删除我的机器人发送的私人消息中的反应。当我尝试这个时:

    embed = discord.Embed(title="Choose the word difficulty.",description="**1.** Easy\n**2.** Medium\n**3.** Hard\n**4.** Ridiculous",color=0x7a17bb)
    msg = await client.send_message(MAYOR_TAKEN[0],embed=embed)
    await client.add_reaction(message=msg,emoji='\u0031\u20E3')
    await client.add_reaction(message=msg,emoji='\u0032\u20E3')
    await client.add_reaction(message=msg,emoji='\u0033\u20E3')
    await client.add_reaction(message=msg,emoji='\u0034\u20E3')
    while True:
        react = await client.wait_for_reaction(emoji=None,message=msg,check=check)
        if react.reaction.emoji == '\u0031\u20E3':
            await client.delete_message(message=msg)
            await choosewords(1)
        elif react.reaction.emoji == '\u0032\u20E3':
            await client.delete_message(message=msg)
            await choosewords(2)
        elif react.reaction.emoji == '\u0033\u20E3':
            await client.delete_message(message=msg)
            await choosewords(3)
        elif react.reaction.emoji == '\u0034\u20E3':
            await client.delete_message(message=msg)
            await choosewords(4)
        else:
            await client.remove_reaction(message=msg,emoji=react.reaction.emoji,member=react.user)

我收到 FORBIDDEN (status code: 403): Cannotexecaction on a DM Channel 从await client.remove_reaction(message=msg,emoji=react.reaction.emoji,member=react.user)。我怎样才能消除这种反应?

Edit:

  Traceback (most recent call last)
  File "C:\Users\samue\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\ext\commands\core.py", line 50, in wrapped
    ret = yield from coro(*args, **kwargs)
  File "Spacebotv2.py", line 466, in Werewords
    await choosedifficulty(MAYOR_TAKEN)
  File "Spacebotv2.py", line 443, in choosedifficulty
    await client.remove_reaction(message=msg,emoji=react.reaction.emoji,member=react.user)
  File "C:\Users\samue\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\client.py", line 1002, in remove_reaction
    yield from self.http.remove_reaction(message.id, message.channel.id, emoji, member_id)
  File "C:\Users\samue\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\http.py", line 196, in request
    raise Forbidden(r, data)
discord.errors.Forbidden: FORBIDDEN (status code: 403): Cannot execute action on a DM channel

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\samue\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\ext\commands\bot.py", line 846, in process_commands
    yield from command.invoke(ctx)
  File "C:\Users\samue\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\ext\commands\core.py", line 374, in invoke
    yield from injected(*ctx.args, **ctx.kwargs)
  File "C:\Users\samue\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\ext\commands\core.py", line 54, in wrapped
    raise CommandInvokeError(e) from e
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: Forbidden: FORBIDDEN (status code: 403): Cannot execute action on a DM channel

据我所知,不可能消除在 DM 通道中发送的消息中其他人的反应。根据评论中的建议,建议删除消息并重新发送并添加反应。

Code:


async def send_reaction(ctx: commands.Context):
   msg = await ctx.send("Hello")
   await msg.add_reaction("ur reaction")
   try:
       await bot.wait_for("reaction_add", check=lambda r, u: u.id == ctx.author.id, timeout=60.0) # seconds
   except asyncio.TimeoutError:
       await ctx.send("Timed out")
   else:
       await msg.delete()
       msg = await ctx.send("Hello")
       await msg.add_reaction("ur reaction")

此实现删除旧消息并重新发送新消息。尽管这并没有处理 DM 通道并将其应用于每个通道。您可以检查channel.type以仅将其应用于DM通道并使用msg.remove_reaction()来删除反应。

希望这对您有所帮助,谢谢!

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

如何使用discord.py消除DM中的反应 的相关文章

  • 如何更改充当按钮的范围的文本

    我正在为自定义 Web 应用程序编写自动化测试 我遇到了无法更改跨度文本的问题 我尝试过使用 driver execute script 但没有运气 如果我更好地了解 javascript 这确实会有帮助 据我所知 您无法单击跨度 并且列表
  • 无法包含外部 pandas 文档 Pycharm v--2018.1.2

    我无法包含外部 pandas 文档Pycharm v 2018 1 2 例如 numpy gt http docs scipy org doc numpy reference generated module name element na
  • 将一个时间序列插入到 pandas 中的另一个时间序列中

    我有一组定期测量的值 说 import pandas as pd import numpy as np rng pd date range 2013 01 01 periods 12 freq H data pd Series np ran
  • VSCode pytest 测试发现失败

    Pytest 测试发现失败 用户界面指出 Test discovery error please check the configuration settings for the tests 输出窗口显示 Test Discovery fa
  • Pandas:根据列名进行列的成对乘法

    我有以下数据框 gt gt gt df pd DataFrame ap1 X 1 2 3 4 as1 X 1 2 3 4 ap2 X 2 2 2 2 as2 X 3 3 3 3 gt gt gt df ap1 X as1 X ap2 X a
  • 使用Python将图像转换为十六进制格式

    我的下面有一个jpg文件tmp folder upload path tmp resized test jpg 我一直在使用下面的代码 Method 1 with open upload path rb as image file enco
  • 我可以使用 dask 创建 multivariate_normal 矩阵吗?

    有点相关这个帖子 https stackoverflow com questions 52337612 random multivariate normal on a dask array 我正在尝试复制multivariate norma
  • 字典中列表中仅有的几个索引的总和

    如果我有这种类型的字典 a dictionary dog white 3 5 black 6 7 Brown 23 1 cat gray 5 6 brown 4 9 bird blue 3 5 green 1 2 yellow 4 9 mo
  • 在 Windows 上使用 IPython 笔记本时出现 500 服务器错误

    我刚刚在 Windows 7 Professional 64 位上全新安装了 IPython 笔记本 我采取的步骤是 从以下位置安装 Python 3 4 1http python org http python org gt pip in
  • 在 Tkinter 中使用锚点

    我正在尝试对自动点唱机进行编程 但是我还处于早期阶段 并且在使用时遇到了问题anchor 这是我的代码 from tkinter import from tkinter import messagebox as box def main m
  • python中的sys.stdin.fileno()是什么

    如果这是非常基本的或之前已经问过的 我很抱歉 我用谷歌搜索但找不到简单且令人满意的解释 我想知道什么sys stdin fileno is 我在代码中看到了它 但不明白它的作用 这是实际的代码块 fileno sys stdin filen
  • 在pycharm中调试python代码

    这个问题类似于this https stackoverflow com questions 10240018 how to use pycharm to debug python script一 我正在尝试调试pyethapp https
  • 是否可以写一个负的python类型注释

    这可能听起来不合理 但现在我需要否定类型注释 我的意思是这样的 an int Not Iterable a string Iterable 这是因为我为一个函数编写了一个重载 而 mypy 不理解我 我的功能看起来像这样 overload
  • Scrapy 蜘蛛无法工作

    由于到目前为止没有任何效果 我开始了一个新项目 python scrapy ctl py startproject Nu 我完全按照教程操作 创建了文件夹和一个新的蜘蛛 from scrapy contrib spiders import
  • asyncio - 多次等待协程(周期性任务)

    我正在尝试为异步事件循环创建定期任务 如下所示 但是我收到 RuntimeError 无法重用已等待的协程 异常 显然 asyncio 不允许等待相同的可等待函数 如中讨论的这个错误线程 https bugs python org issu
  • 从 dask 数据框中的日期时间序列获取年份和星期?

    如果我有一个 Pandas 数据框和一个日期时间类型的列 我可以按如下方式获取年份 df year df date dt year 对于 dask 数据框 这是行不通的 如果我先计算 像这样 df year df date compute
  • 如何对字符串列表进行排序?

    在 Python 中创建按字母顺序排序的列表的最佳方法是什么 基本回答 mylist b C A mylist sort 这会修改您的原始列表 即就地排序 要获取列表的排序副本而不更改原始列表 请使用sorted http docs pyt
  • PyQt 中的线程和信号问题

    我在 PyQt 中的线程之间进行通信时遇到一些问题 我使用信号在两个线程 发送者和监听者 之间进行通信 发送者发送消息 期望被监听者接收 但是 没有收到任何消息 谁能建议可能出了什么问题 我确信这一定很简单 但我已经环顾了几个小时但没有发现
  • 使用“pythonw”(而不是“python”)运行应用程序时找不到模块

    我尝试了这个最小的例子 from flask import Flask app Flask name app route def hello world return Hello World if name main app run deb
  • 如何使用 Django (Python) 登录表单?

    我在 Django 中构建了一个登录表单 现在我遇到了路由问题 当我选择登录按钮时 表单不会发送正确的遮阳篷 我认为前端的表单无法从 查看 py 文件 所以它不会发送任何 awnser 并且登录过程无法工作 该表单是一个简单的静态 html

随机推荐

  • 如何将 Vagrant 与 Jenkins 结合起来,打造完美的持续集成环境?

    您有一个需要运行一些软件要求的项目 例如 特定版本的 Apache PHP 版本 MySQL 数据库实例和其他几个软件 你已经发现了Vagrant http vagrantup com docs getting started why ht
  • HTC Desire HD 不接受带有 hardware.Camera 的 setParameter()

    我是一名学生 正在 Android 2 2 上开发一个项目 对于我的测试和应用程序执行 我使用 HTC Desire HD 配备 Android 2 2 我只想创建一个组合 类 来用移动设备拍照 我有一个 Android 类 用于 getO
  • 如何在标题中绘制正确的 CSS 边框?

    在图片表示的对话框窗口上只有一个小部件类QTableWidget 我的问题是bottom标题边框 红色方块 QHeaderView类 与左 右彩色边框重叠 我想要的是使红色方块部分正确地显示为绿色方块 这是CSS代码Qt Designer我
  • Entry() 和 Text() 有什么区别?

    tkinter 和 tkinter 有什么区别Entry and Text 功能 在网上找不到任何东西 所以弄清楚后 想将其发布在网上供其他人使用 Entry 允许一行输入 而 Text 允许多行输入
  • 覆盖该类的字体大小.MuiTypography-body1

    我试图覆盖这个类的字体大小 MuiTypography body1 所以我研究并找到了这个链接https material ui com api typography https material ui com api typography
  • 外发光圆角TextBox

    我试图了解 UWP 的 XAML 的一些基本限制以及如何改变 XAML 控件的样式 我决定看看是否可以创建一个具有圆角和外发光边框效果的文本框控件 我没有尝试过任何东西 因为我在搜索解决方案时最终遇到的所有地方似乎只适用于 WPF 平台 如
  • 多个App.Config文件

    我想分离我的 app config 文件 例如 我想将 ServiceModel 部分移动到同一项目中的另一个配置文件 我怎样才能做到这一点 Thanks 您应该能够有一个空元素configSource属性设置为第二个文件 相对于第一个文件
  • 在 JavaScript 中拦截粘贴数据

    我从以下代码中得到了拦截Javascript中的粘贴事件 https stackoverflow com questions 6035071 intercept paste event in javascript 我需要在粘贴之前获取它 否
  • 在 Windows 上,是否可以以不同用户身份运行单个 goroutine?

    如何将 goroutine 的运行委托给 Windows 上的另一个非管理员帐户 我看到你可以这样做Linux https groups google com forum topic golang nuts IpfEDBVSE34 usin
  • 使用 moment js 将分钟转换为天、小时和分钟

    我正在使用 moment js 将分钟转换为天 小时和分钟 moment utc startOf year add minutes timeInMinute format D Days and HH Hours and mm timeInM
  • 如何使用Qt WebEngine和QWebChannel?

    我正在使用新的 WebEngine 来玩耍和学习 我一直在尝试使用 Qt WebKit 找到一些类似的方法 addToJavaScriptWindowObject 我发现使用 Qt WebEngine 我必须使用QWebChannel将函数
  • Android 使用 CamcorderProfile 捕捉慢动作视频

    我正在尝试在 Nexus 5x 上捕捉慢动作视频 这就是我配置媒体记录器的方式 CamcorderProfile profile CamcorderProfile get CamcorderProfile QUALITY HIGH SPEE
  • 在 Fortran 中使用矩阵作为函数中的参数和子例程中的输出

    我试图创建一个程序 要求我使用矩阵作为函数和子例程的输入 并且还要求我将矩阵作为 Fortran 中的子例程输出 但是 我在这样做时遇到了多个错误 我无法理解这些错误的根源以及如何修复它们 我对逻辑很有信心 但我在处理矩阵时似乎犯了错误 求
  • NoSuchMethodError:没有静态方法decodeBase64

    我正在开发马拉地语聊天机器人 在此我使用 Google Translator API 和语音转文本 直到昨天应用程序工作正常 但重新启动 Android Studio 后 出现此错误 我的应用程序正在 AVD 中运行 并且只有一台设备已获得
  • ANTLR4:词法分析器规则:任何字符串,只要不包含这两个并排字符?

    有没有办法在 ANTLR4 中表达这一点 任何字符串 只要它不立即包含星号 后面跟着一个正斜杠 这不起作用 因为 ANTRL 抛出此错误 multi character literals are not allowed in lexer s
  • Mercurial:自动添加子存储库的 Windows 脚本

    瑞安 威尔考克斯 https stackoverflow com users 224334 ryanwilcox已发布脚本于here https stackoverflow com questions 2408772 how do i ad
  • 获取一致的密钥错误:\n [重复]

    这个问题在这里已经有答案了 当尝试运行包含以下代码的脚本来生成文本块时 from textwrap import dedent text dedent yada yada 1 2 3 4 0 Null 1 Hello world 1 2 f
  • WebView - Youtube 视频在后台旋转播放并最小化

    我有一个 WebView 问题 基本上我正在加载一个在某些地方嵌入了视频的论坛 如果您播放视频然后旋转设备 视频会在后台继续播放 您可以访问它来停止它 当您最小化应用程序时也会发生这种情况 有办法阻止这种情况吗 这是我正在使用的 WebVi
  • 将html表中的所有数据获取到数组中

    到目前为止 我可以将所有通用文本数据放入数组中 但我正在努力处理表格单元格内的选择框 到目前为止 在我的 jQuery 中我有这个 image button click function var myTableArray table img
  • 如何使用discord.py消除DM中的反应

    我想删除我的机器人发送的私人消息中的反应 当我尝试这个时 embed discord Embed title Choose the word difficulty description 1 Easy n 2 Medium n 3 Hard