因此,我正在为我使用的服务器制作一个discord机器人,并希望添加检查器功能,以便如果用户在“ bannedWords”列表中说了什么而未在特定频道中使用(工作),它将对其进行编辑。消息中有“ [已编辑]”的位置。我相信代码本身可以正常工作,但每次测试时都会收到此错误消息。我尝试通过Discord开发人员门户网站添加权限(选择“ OAuth2”,选择“机器人”范围,以及管理角色,查看频道,发送消息,管理消息,阅读消息历史记录并提及所有人权限),然后复制链接并将其添加到我的测试服务器,但通过角色获得适当的权限似乎仍然无法正常工作。 完全错误:
Traceback (most recent call last):
File "C:\Users\Me\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\client.py", line 312, in _run_event
await coro(*args, **kwargs)
File "C:\Users\Me\Desktop\Productive\Programming Projects\Python 3\Other\MyBot\bot.py", line 32, in on_message
await message.edit(content = editedMessage)
File "C:\Users\Me\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\message.py", line 843, in edit
data = await self._state.http.edit_message(self.channel.id, self.id, **fields)
File "C:\Users\Me\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\http.py", line 241, in request
raise Forbidden(r, data)
discord.errors.Forbidden: 403 Forbidden (error code: 50005): Cannot edit a message authored by another user
代码
import discord
bot=discord.Client()
@bot.event
async def on_ready():
print('Logged in')
print("Username: %s" % (bot.user.name))
print("Userid: %s" % (bot.user.id))
@bot.event
async def on_message(message):
if message.author.id == bot.user.id:
return
bannedWords=['chink','dyke','fag','ook','molest','nig','rape','retard','spic','zipperhead','tranny']
print(str(message))
print(str(message.content))
if "name='no-rules-lol'" not in str(message): #probably a better way to do this but it works
for word in bannedWords:
if word in message.content.lower():
await message.channel.send('{0.author.mention}, you have used a word that is black-listed please read <#754763230169006210> to get a full list of black-listed words'.format(message))
#await message.edit(content = message + 'this has been edited')
editedMessage=str(message.content.replace(word,'[redacted]'))
await message.edit(content = editedMessage)
bot.run(Token)
答案 0 :(得分:0)
您无法编辑不是由机器人发送的消息。 相反,只需尝试删除消息。
await message.delete()
就是这么简单。
如果您要在机器人中添加更多命令,您可以最后将其添加到您的 on_message 中:
await bot.process_commands(message)
谢谢。