我目前正在研究 discord.py bot,它将用于管理 discord 服务器上的许可证。 目前在成功兑换代码后如何添加角色。 我在我的不和谐服务器中添加了 3 个角色(1Day、7Days、30Days), 如何让机器人向成功兑换许可证的用户添加角色?
这是我现在的代码:
import discord
import random
import re
from discord.ext import commands
from discord.utils import get
client = discord.Client()
l1d = open('licenses1d', 'r').read().splitlines()
l7d = open('licenses7d', 'r').read().splitlines()
l30d = open('licenses30d', 'r').read().splitlines()
def license_gen1d():
a = 'qwertzuiopasdfghjklyxcvbnm1234567890'
license = ''
while True:
while len(license) < 30:
character = random.choice(a)
license += character
if len(license) == 30:
with open('licenses1d', 'a') as f:
f.writelines(license + '\n')
f.close()
print('Successfuly Generated 1 day License: ' + license)
return(license)
def license_gen7d():
a = 'qwertzuiopasdfghjklyxcvbnm1234567890'
license = ''
while True:
while len(license) < 30:
character = random.choice(a)
license += character
if len(license) == 30:
with open('licenses7d', 'a') as f:
f.write(license + '\n')
f.close()
print('Successfuly Generated 7 days License: ' + license)
return(license)
def license_gen30d():
a = 'qwertzuiopasdfghjklyxcvbnm1234567890'
license = ''
while True:
while len(license) < 30:
character = random.choice(a)
license += character
if len(license) == 30:
with open('licenses30d', 'a') as f:
f.write(license + '\n')
f.close()
print('Successfuly Generated 30 days License: ' + license)
return(license)
@client.event
async def on_ready():
print('Logged in as {0.user}'.format(client))
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith('$test'):
await message.channel.send('test!')
if message.content.startswith('$generate 1d'):
await message.channel.send('Generating license for 1 day')
license = license_gen1d()
await message.channel.send(license)
if message.content.startswith('$generate 7d'):
await message.channel.send('Generating license for 7 days')
license = license_gen7d()
await message.channel.send(license)
if message.content.startswith('$generate 30d'):
await message.channel.send('Generating license for 30 days')
license = license_gen30d()
await message.channel.send(license)
if message.content.startswith('$redeem'):
rcode = re.findall('redeem (.*)', message.content)[0]
if rcode in l1d:
await message.channel.send('Successfully Redeemed Code for 1 day use!')
elif rcode in l7d:
await message.channel.send('Successfully Redeemed Code for 7 day use!')
elif rcode in l30d:
await message.channel.send('Successfully Redeemed Code for 30 day use!')
else:
await message.channel.send('Invalid code!')
client.run('token')
答案 0 :(得分:3)
为用户添加和编辑角色,
member = message.author #gets the member to edit
var = discord.utils.get(message.guild.roles, name = "role name")
# This will get the role you want to edit^
member.add_role(var) # adds the role
await var.edit(color=0x008000, reason="The reason")
#and edits the color
有关更多参数,您可以编辑访问 https://discordpy.readthedocs.io/en/latest/api.html?highlight=role#discord.Role 如果这有效,请不要忘记将其标记为答案。
答案 1 :(得分:1)
如果许可证密钥正确,您将获得消息的作者,然后更新他们的角色。具有 Member.roles
的函数。如果您搜索它,我认为文档有一个示例(带有代码)。我现在无法打开文档,我不记得确切的命令名称和参数。
答案 2 :(得分:1)
这是我想出的:
member = message.author
role = get(message.guild.roles, name = "test role")
await member.add_roles(role, atomic=True)