Dan*_*Tam 55 python python-3.x discord discord.py
昨天,我的代码非常好。一切都在运行……而且进展顺利。突然出现这个错误:
TypeError: __new__() got an unexpected keyword argument 'deny_new'
Run Code Online (Sandbox Code Playgroud)
在我的 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'
Run Code Online (Sandbox Code Playgroud)
我用不同的文件和机器人尝试了它,我得到了相同的结果,这就像 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')
Run Code Online (Sandbox Code Playgroud)
Ami*_*osh 72
Discord 推送了一个更改覆盖对象的新更改。
只需重新安装最新版本的 Discord.py
python3 -m pip install -U discord.py
Run Code Online (Sandbox Code Playgroud)
就是这样。
如果您坚持使用旧版本discord.py并且现在不想更新 10k+ 行代码,另一种选择是我根据此提交提出的以下快速而肮脏的补丁:
--- 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.
Run Code Online (Sandbox Code Playgroud)
(注意:这与discord.py 0.16.7不同。根据discord.py您运行的版本,它可能略有不同。)
我必须强调,这充其量只是一次黑客攻击,并且无法保证这将持续多长时间。此外,不能保证 Discord 不会突然引入一些其他随机 API 更改,这些更改将以discord.py新的和有趣的方式打破旧的。您(像我一样)应该真正更新您的代码以符合更新的discord.py. 我只提出这个解决方法,因为我怀疑你和我处于相同的情况(事情突然中断,需要立即恢复并运行,但没有时间快速更新 10k+ 行代码来解决这个问题。
小智 5
我刚刚遇到了这个问题,刚刚修复了它,这就是我所做的(这适用于我运行 Windows 的笔记本电脑):
pip uninstall discord.py
pip install discord.py
py -3 -m pip install -U discord.py
Run Code Online (Sandbox Code Playgroud)
我还在 Raspberry Pi 上运行一个不和谐的机器人,这就是我修复它的方法:
pip uninstall discord.py
pip install discord.py
python3 -m pip install -U discord.py
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25146 次 |
| 最近记录: |