当前位置: 首页 > 知识库问答 >
问题:

正在尝试为discord bot设置权限,但似乎无法

萧宁
2023-03-14

因此,我正在为我使用的服务器制作一个不和谐机器人,并希望添加一个审查功能,以便如果用户在“禁止使用的词语”列表中说了一些话,而不是在特定的频道(工作)中,它将编辑消息以使“[编辑”在它的地方。我相信代码本身是工作的,但是每次我测试它时都会收到这个错误消息。我尝试通过不和谐开发者门户添加权限(选择“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)

共有1个答案

咸星波
2023-03-14

您不能编辑不是由bot发送的消息。相反,只需尝试删除邮件。

await message.delete()

就这么简单。

如果您要向机器人添加更多命令,您可以最后将其添加到on_message:

await bot.process_commands(message)

非常感谢。

 类似资料: