python - 我想制作每个服务器频道
问题描述
我对“每台服务器”的意思是通道绑定到服务器这是我制作的代码:
def get_channel(client,message):
with open('channels.json', 'r') as f:
channels = json.load(f)
return channels[str(message.guild.id)]
@client.event
async def on_guild_join(guild):
with open('channels.json', 'r') as f:
channels = json.load(f)
channels[str(guild.id)] = ''
with open('channels.json', 'w') as f:
json.dump(channels,f)
@client.command()
async def cc(ctx, prefix):
guild = ctx.guild
with open('channels.json', 'r') as f:
channels = json.load(f)
channels[str(guild.id)] = prefix
with open('channels.json', 'w') as f:
json.dump(channels,f)
await ctx.send('done')
这是我将函数放入的代码
@client.event
async def on_member_join(member):
channel = discord.utils.get(member.guild.channels, name=get_channel)
await channel.send(f'Welcome {member.mention}')
数据库中的文本是正确的我得到的错误:await channel.send(f'Welcome {member.mention}') AttributeError: 'NoneType' object has no attribute 'send'
解决方案
def get_channel(guild):
with open('channels.json', 'r') as f:
channels = json.load(f)
return channels[str(guild.id)]
@client.event
async def on_guild_join(guild):
with open('channels.json', 'r') as f:
channels = json.load(f)
channels[str(guild.id)] = ''
with open('channels.json', 'w') as f:
json.dump(channels,f)
@client.command()
async def channel_define(ctx, channel_name):
guild = ctx.guild
with open('channels.json', 'r') as f:
channels = json.load(f)
channels[str(guild.id)] = channel_name
with open('channels.json', 'w') as f:
json.dump(channels,f)
await ctx.send('done')
@client.event
async def on_member_join(member):
channel = discord.utils.get(member.guild.channels, name=get_channel(member.guild))
await channel.send(f'Welcome {member.mention}')
这是代码的更正版本。但我建议您注册频道 ID 而不是名称。
如果您想使用带有 id 的 get 方法,请参阅文档:https ://discordpy.readthedocs.io/en/stable/api.html#discord.utils.get
推荐阅读
- angular - 位置 0 的角度升级 CLI 意外令牌
- google-apps-script - getOwner() 在文件夹上的谷歌驱动器中失败
- php - Apache2 + PHP-FPM - 未定义函数 apache_getenv()
- azure-resource-manager - 如何在 ARM 模板中迭代内部依赖项?
- excel - 将 dll 函数加载到 Excel 365 中
- node.js - 页面刷新后Websocket重新连接
- .net - 子例程在 Visual Studio 中有效,但不适用于 .exe 文件
- python - 预测给定文档的每个分类 bin 的概率分数
- postgresql-11 - 在 pgAgent 中设置文件导出
- c# - EF Core 2.1 [更改跟踪] - 保存所有相关实体