Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Discord API“;“软禁令”;为了Selfbot?它只能读取自己的消息_Discord_Discord.py - Fatal编程技术网

Discord API“;“软禁令”;为了Selfbot?它只能读取自己的消息

Discord API“;“软禁令”;为了Selfbot?它只能读取自己的消息,discord,discord.py,Discord,Discord.py,所以今天,突然间,我的不和谐机器人停止了工作。它已经运行了数周,没有任何问题。它所做的只是监视来自其他渠道的bot警报,并在满足某些条件时通知我 基本上,问题是当我print(message.content)时,我得到一个空字符串,当我print(message.embeddes)时,我得到一个空列表。对于不是我自己发送的任何消息,都会发生这种情况。基本上,我可以从任何渠道提取任何消息,但如果它不是我发送的,我会看到它是空的。我仍然可以打印(消息)并查看其ID、作者等,但无法检索内容/嵌入内容

所以今天,突然间,我的不和谐机器人停止了工作。它已经运行了数周,没有任何问题。它所做的只是监视来自其他渠道的bot警报,并在满足某些条件时通知我

基本上,问题是当我
print(message.content)
时,我得到一个空字符串,当我
print(message.embeddes)
时,我得到一个空列表。对于不是我自己发送的任何消息,都会发生这种情况。基本上,我可以从任何渠道提取任何消息,但如果它不是我发送的,我会看到它是空的。我仍然可以
打印(消息)
并查看其ID、作者等,但无法检索内容/嵌入内容


我原以为这是Discord API的某种软禁令(帐户没有收到任何警告,工作正常),但后来尝试创建一个新帐户,也遇到了同样的问题。我很困惑,无法找出问题的原因。。。除非他们为每个人更改了API。

每个人的问题的答案:


2021年4月30日,discord做出了一些改变,打破了只在SelfBot上接收消息内容和嵌入(可能更多)内容的局面。如果你有这个问题,那么你正在使用一个selfbot,这是对不和谐的TOS。。。自1.7版以来,discord.py也不推荐使用它,因此不会获得支持。如果你想获得支持,你需要改用真正的机器人。有Node.js模块可以解决这个问题(discord.js self)

事实证明它对我也不起作用,我认为它起作用了 因为我以前没有测试它,只使用历史记录或我自己作为用户

解决方法是使用
频道.history
,它返回 支持。内容和类似

可能有类似的东西

@bot.event
异步def on_消息(消息):
message.channel.history中消息的异步(限制=1):
打印(message.content)
我也尝试过(糟糕地)制造不和。py总是从历史中得到它,这似乎对我有用。(适用于v1.x版)

自cbbd51bf17bb19ea4835365e08266d06a27c1459周一2001年9月17日00:00:00
发件人:示例用户
日期:2021年5月7日星期五13:37:50+0300
主题:[修补程序]为自助机器人程序上的on_消息添加解决方案
最近,自我机器人在事件中获得的消息被破坏了。
在on_消息的情况下,.content和.embeddes不起作用。
但是,如果使用
频道历史()
此解决方法通过从历史记录中检索on_消息来解决此问题
总是
注意:我做了异步解析调用,似乎没有破坏任何东西(还没有)
---
discord/gateway.py | 6+++++-
不和谐/状态.py | 9++++++++-
2个文件已更改,13个插入(+),2个删除(-)
diff——git a/discord/gateway.py b/discord/gateway.py
索引210a8822..019693db 100644
---a/discord/gateway.py
+++b/discord/gateway.py
@@-30,6+30,7@@import concurrent.futures
导入json
导入日志记录
导入结构
+进口检验
导入系统
导入时间
导入线程
@@-506,7+507,10@@class DiscordWebSocket:
除KeyError外:
log.debug('未知事件%s',事件)
其他:
-func(数据)
+如果检查.iscoroutinef函数(func):
+等待函数(数据)
+其他:
+func(数据)
#删除已调度的侦听器
删除=[]
diff——git a/discord/state.py b/discord/state.py
索引da1212c1..7c713e39 100644
---a/discord/state.py
+++b/discord/state.py
@@-485,9+485,16@@class连接状态:
def parse_已恢复(自身,数据):
自动发送('恢复')
-def解析_消息_创建(自身、数据):
+异步def解析消息创建(自身、数据):
通道,u=self.\u获取\u帮会\u通道(数据)
消息=消息(通道=通道,数据=数据,状态=自身)
+#这是一个解决方案,用于不在自助机器人上工作的邮件
+message.channel.history中temp_msg的异步(limit=1):
+如果临时消息id!=message.id:
+log.warning(“从历史记录中检索到的消息不正确”)
+中断
+            
+消息=临时消息
自动发送('消息',消息)
如果self.\u消息不是None:
self.\u messages.append(消息)
-- 
2.30.2

编辑:改为现在查看其他人的答案

过去几周我一直在玩这个游戏,利用互联网上的技巧和想法,我为自助机器人创建了Discord.py的补丁版本

似乎您需要做几件事才能获得
消息。内容
消息。嵌入
再次工作:

  • 禁用所有意图
  • 编辑发送到Discord的标识数据包
我的fork完成了所有这一切,并且混淆了用户代理和其他一些事情

检查自述文件中的更改内容+学分


Link:,

我的程序甚至不是自助机器人,我今天也注意到了这一点。你的问题和我的有关吗?非常有趣。。。所以这是Discord对他们的API所做的改变,但我没想到这也会影响到普通的机器人。这真的很烦人,我不知道如何解决它(你为什么要删除你的问题?这似乎只是一个discord API错误或其他什么,所以我不认为会有解决办法。Selfbots违反discord的服务条款。d.py是什么?你是指discord.py吗?@TKperson,是的,d.py意味着discord。py自“self bots”以来,除了不使用库监控文本之外,还有其他方法吗?)正在变得越来越严格,接近灭绝?OP使用discord.py是否也有discord.py版本?这是一个API更改@Haider,无论你尝试什么,都不可能用自机器人接收消息。我还认为答案中提到的模块将无法工作。@ukaszKwieciński false,我正在进行API调用,working fineMaking API调用与接收内容为@djsnoobwill this wor的消息不同
From cbbd51bf17bb19ea4835365e08266d06a27c1459 Mon Sep 17 00:00:00 2001
From: Example User <user@example.com>
Date: Fri, 7 May 2021 13:37:50 +0300
Subject: [PATCH] add workaround for on_message on self bots

Recently, now the messages that self bots get in events are broken.
In the case of on_message, .content and .embeds don't work.

However, this isn't the case if the message is retrieved with
channel.history()

This workarounds the issue for on_message by retrieving it from history
always

NOTE: I made the parse call async, didnt seem to break anything (yet)
---
 discord/gateway.py | 6 +++++-
 discord/state.py   | 9 ++++++++-
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/discord/gateway.py b/discord/gateway.py
index 210a8822..019693db 100644
--- a/discord/gateway.py
+++ b/discord/gateway.py
@@ -30,6 +30,7 @@ import concurrent.futures
 import json
 import logging
 import struct
+import inspect
 import sys
 import time
 import threading
@@ -506,7 +507,10 @@ class DiscordWebSocket:
         except KeyError:
             log.debug('Unknown event %s.', event)
         else:
-            func(data)
+            if inspect.iscoroutinefunction(func):
+                await func(data)
+            else:
+                func(data)
 
         # remove the dispatched listeners
         removed = []
diff --git a/discord/state.py b/discord/state.py
index da1212c1..7c713e39 100644
--- a/discord/state.py
+++ b/discord/state.py
@@ -485,9 +485,16 @@ class ConnectionState:
     def parse_resumed(self, data):
         self.dispatch('resumed')
 
-    def parse_message_create(self, data):
+    async def parse_message_create(self, data):
         channel, _ = self._get_guild_channel(data)
         message = Message(channel=channel, data=data, state=self)
+        # This is a workaround for messages not working on self bots
+        async for temp_msg in message.channel.history(limit=1):
+            if temp_msg.id != message.id:
+                log.warning("retrieved on_message from history is not correct one")
+                break
+            
+            message = temp_msg
         self.dispatch('message', message)
         if self._messages is not None:
             self._messages.append(message)
-- 
2.30.2