Discord.py错误:TypeError:\uuuuuu new\uuuuuuuuu()获得意外的关键字参数“deny\u new”

2024-09-30 22:13:21 发布

您现在位置:Python中文网/ 问答频道 /正文

昨天,我的代码非常好。一切都在运行。。。一切都很顺利。突然,这个错误:

TypeError: __new__() got an unexpected keyword argument 'deny_new'

在我的PyCharm控制台中弹出。我在网上查过,但我只发现了一个类似的问题,没有答案。我希望stackoverflow社区能够帮助我。我并没有改变我的代码,我所做的只是,我试图在heroku上托管我的机器人,但运行不顺利。在我最初的几次尝试之后,我放弃了。但是,我发现我的机器人开始发疯,我无法再运行它了:<;。有没有其他人经历过这种情况,并且知道如何修复它? 更新 我刚刚发现,出于某种原因,它只在我的测试服务器上工作,而不在任何其他服务器上工作

Traceback (most recent call last):
  File "C:/Users/danie/PyCharmProjects/skybot/skybotgaming.py", line 21, in <module>
    client.run('TOKEN')
  File "C:\Users\danie\anaconda3\envs\discordbottest\lib\site-packages\discord\client.py", line 640, in run
    return future.result()
  File "C:\Users\danie\anaconda3\envs\discordbottest\lib\site-packages\discord\client.py", line 621, in runner
    await self.start(*args, **kwargs)
  File "C:\Users\danie\anaconda3\envs\discordbottest\lib\site-packages\discord\client.py", line 585, in start
    await self.connect(reconnect=reconnect)
  File "C:\Users\danie\anaconda3\envs\discordbottest\lib\site-packages\discord\client.py", line 499, in connect
    await self._connect()
  File "C:\Users\danie\anaconda3\envs\discordbottest\lib\site-packages\discord\client.py", line 463, in _connect
    await self.ws.poll_event()
  File "C:\Users\danie\anaconda3\envs\discordbottest\lib\site-packages\discord\gateway.py", line 471, in poll_event
    await self.received_message(msg)
  File "C:\Users\danie\anaconda3\envs\discordbottest\lib\site-packages\discord\gateway.py", line 425, in received_message
    func(data)
  File "C:\Users\danie\anaconda3\envs\discordbottest\lib\site-packages\discord\state.py", line 750, in parse_guild_create
    guild = self._get_create_guild(data)
  File "C:\Users\danie\anaconda3\envs\discordbottest\lib\site-packages\discord\state.py", line 725, in _get_create_guild
    guild._from_data(data)
  File "C:\Users\danie\anaconda3\envs\discordbottest\lib\site-packages\discord\guild.py", line 297, in _from_data
    self._sync(guild)
  File "C:\Users\danie\anaconda3\envs\discordbottest\lib\site-packages\discord\guild.py", line 328, in _sync
    self._add_channel(CategoryChannel(guild=self, data=c, state=self._state))
  File "C:\Users\danie\anaconda3\envs\discordbottest\lib\site-packages\discord\channel.py", line 726, in __init__
    self._update(guild, data)
  File "C:\Users\danie\anaconda3\envs\discordbottest\lib\site-packages\discord\channel.py", line 737, in _update
    self._fill_overwrites(data)
  File "C:\Users\danie\anaconda3\envs\discordbottest\lib\site-packages\discord\abc.py", line 294, in _fill_overwrites
    self._overwrites.append(_Overwrites(id=overridden_id, **overridden))
TypeError: __new__() got an unexpected keyword argument 'deny_new'

我用另一个文件和bot进行了尝试,得到了相同的结果,这就像discord.py有问题一样。 这就是我的全部代码

import discord
import random
from discord.ext import commands
import asyncio
client = commands.Bot(command_prefix='{')
client.remove_command('help')

@client.event
async def on_ready():
    print("Signed in")

@client.command()
async def dm(ctx):
    await ctx.author.send("What up chump?")

client.run('TOKEN')

Tags: inpyselfclientlibpackageslinesite
3条回答

我刚刚解决了这个问题,下面是我所做的(这对运行Windows的笔记本电脑有效):

pip uninstall discord.py
pip install discord.py
py -3 -m pip install -U discord.py

我还在树莓皮上运行discord机器人,我就是这样修复的:

pip uninstall discord.py
pip install discord.py
python3 -m pip install -U discord.py

另一种选择是,如果您使用的是较旧版本的discord.py,并且不想现在就更新10k+行代码,那么我基于this commit提出了以下快速而肮脏的修补程序:

--- channel.py.old  2017-02-27 15:02:23.000000000 -0800
+++ channel.py  2020-07-22 02:44:03.000000000 -0700
@@ -27,13 +27,28 @@
 from . import utils
 from .permissions import Permissions, PermissionOverwrite
 from .enums import ChannelType
-from collections import namedtuple
 from .mixins import Hashable
 from .role import Role
 from .user import User
 from .member import Member
 
-Overwrites = namedtuple('Overwrites', 'id allow deny type')
+class Overwrites:
+    __slots__ = ('id', 'allow', 'deny', 'type')
+
+    def __init__(self, **kwargs):
+        self.id = kwargs.pop('id')
+        self.allow = kwargs.pop('allow', 0)
+        self.deny = kwargs.pop('deny', 0)
+        self.type = kwargs.pop('type')
+
+    def _asdict(self):
+        return {
+            'id': self.id,
+            'allow': self.allow,
+            'deny': self.deny,
+            'type': self.type,
+        }
+
 
 class Channel(Hashable):
     """Represents a Discord server channel.

(注意:这与discord.py 0.16.7不同。根据您运行的discord.py版本的不同,可能会略有不同。)

我必须强调,这充其量只是一种黑客行为,而且无法保证这种行为会持续多久。此外,不能保证Discord不会突然引入其他一些随机API更改,这些更改将以新的有趣的方式打破旧的discord.py。你(和我一样)应该真正更新你的代码以符合更新的discord.py。我之所以提出此解决方案,是因为我怀疑您的处境与我相同(突然出现问题,需要立即恢复并运行,但没有时间快速更新10k+行代码来解决此问题。

Discord推出了一个新的更改,该更改将覆盖对象

只需重新安装Discord.py的最新版本

python3 -m pip install -U discord.py

就这样

相关问题 更多 >