python - 向在不和谐中扮演角色的每个人发送私人消息
问题描述
如果他们具有特定角色,我正在尝试向不和谐频道中的每个人发送私人消息。
我设法找到这个:
from discord.ext import commands
import discord
TOKEN = 'xxx'
bot = commands.Bot(command_prefix='!')
@bot.command(pass_context=True)
async def message_role(ctx, role: discord.Role, *, message):
for member in ctx.message.server.members:
if role in member.roles:
await bot.send_message(member, message)
bot.run(TOKEN)
我使用 Client.x 但我不明白什么是 Bot。是,当我运行它时,我收到以下错误消息:
PS D:\discord bots> py .\DMeveryone.py
Ignoring exception in command message_role:
Traceback (most recent call last):
File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\discord\ext\commands\bot.py", line 898, in invoke
await ctx.command.invoke(ctx)
File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\discord\ext\commands\core.py", line 608, in invoke
await self.prepare(ctx)
File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\discord\ext\commands\core.py", line 573, in prepare
await self._parse_arguments(ctx)
File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\discord\ext\commands\core.py", line 491, in _parse_arguments
transformed = await self.transform(ctx, param)
File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\discord\ext\commands\core.py", line 353, in transform
return await self.do_conversion(ctx, converter, argument, param)
File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\discord\ext\commands\core.py", line 308, in do_conversion
return await self._actual_conversion(ctx, converter, argument, param)
File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\discord\ext\commands\core.py", line 254, in _actual_conversion
ret = await instance.convert(ctx, argument)
File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\discord\ext\commands\converter.py", line 320, in convert
raise NoPrivateMessage()
discord.ext.commands.errors.NoPrivateMessage
这是消息:!message_role member 大家好!
如果有人可以向我解释这个很棒的问题,非常感谢。
解决方案
discord.ext.commands.Bot是 discord.py 和子类 discord.Client 的命令扩展的一部分。
根据discord.ext.commands.NoPrivateMessage的文档,它是
当操作在私人消息上下文中不起作用时引发。
这是因为您正在尝试使用通过 DM 使用RoleConverter的命令,其中没有角色。
您收到AttributeError: 'Message' object has no attribute 'server'
异常的原因是您尝试使用Message.server属性,但您使用的是 discord.py 的 rewrite 分支,其中Server 现在是 Guild。Message.server 在 discord.py ( @Patrick Haugh )
的异步分支上作为 Message.channel 和 Channel.server 的快捷属性存在。相应地,Message.guild作为 rewrite 分支上的属性存在。
您还使用一种方法来发送仅存在于异步分支上的消息。请参阅重写分支文档的迁移到 v1.0 部分的发送消息小节。
推荐阅读
- php - 如何在 wp 插件开发中自行初始化一个类?
- elasticsearch - elasticsearch聚合并获取列值
- linux - 通过 www-data 组授予用户对 /var/www/html 的写入权限
- wpf - 并非所有 StackPanel 的 DataTriggers 都在工作
- html - 如何在 HTML 电子邮件中创建反馈表?
- laravel - 包中的扩展用户模型
- java - 加载了哪个配置文件?
- javascript - Angularjs typeahead显示对象数组
- xsl-fo - 左侧为原文,右侧为正对译文
- xamarin.ios - 为 android 类库 vs 2017 生成 nugetpackage