Discord.py "message" 是没有定义的错误即使没有错?
Discord.py "message" is not defined error even though nothing is wrong?
所以我对制作 Discord 机器人 和 python 还很陌生,但是,每当我尝试 运行 这个 returns 一个错误:
这是我的代码:
import os
import discord
from discord.ext import commands
import keepAlive
keepAlive.awake("https://Shulker.E1ytra.repl.co", False)
TOKEN = os.environ['TOKEN']
intents = discord.Intents().all()
bot = commands.Bot(command_prefix='?', intents=intents)
@bot.event
async def on_member_join(member):
guild = await bot.fetch_guild(958309214663622697)
role = discord.utils.get(guild.roles, name='unverified')
await member.add_roles(role)
await bot.process_commands(message)
@bot.command()
async def verf(ctx, arg):
if (arg == '51304'):
await ctx.message.delete()
member = ctx.author
role = discord.utils.get(ctx.guild.roles, name="Basement People")
await member.add_roles(role)
role = discord.utils.get(ctx.guild.roles, name="unverified")
await member.remove_roles(role)
embedVar = discord.Embed(title=" ", description=(ctx.message.author) + "Welcome to the server.", color=0x9b59b6)
await ctx.send(embed=embedVar, delete_after=5)
else:
await ctx.message.delete()
embedVar = discord.Embed(title=" ", description=(ctx.message.author) + "The secret code is invalid.", color=0x9b59b6)
await ctx.send(embed=embedVar, delete_after=5)
@bot.command()
@commands.has_permissions(kick_members=True)
async def kick(ctx, member: discord.Member, *, reason=None):
if reason == None:
reason = "N/A"
await ctx.message.delete()
await ctx.guild.kick(member)
embedVar = discord.Embed(title=" ", description=f"{member.mention} has been kicked. Reason: {reason}", color=0x9b59b6)
await ctx.send(embed=embedVar)
@bot.command()
@commands.has_permissions(ban_members=True)
async def ban(ctx, member: discord.Member, *, reason=None):
if reason == None:
reason = "N/A"
await ctx.message.delete()
await ctx.guild.ban(member)
embedVar = discord.Embed(title=" ", description=f"{member.mention} has been banned. Reason: {reason}", color=0x9b59b6)
await ctx.send(embed=embedVar)
@bot.command()
@commands.has_permissions(ban_members=True)
async def unban(ctx, member: discord.Member, *, reason=None):
if reason == None:
reason = "N/A"
await ctx.message.delete()
await ctx.guild.unban(member)
embedVar = discord.Embed(title=" ", description=f"{member.mention} has been unbanned. Reason: {reason}", color=0x9b59b6)
await ctx.send(embed=embedVar)
@bot.command()
@commands.has_permissions(manage_channels=True)
async def lock(ctx, channel : discord.TextChannel=None):
await ctx.message.delete()
overwrite = ctx.channel.overwrites_for(ctx.guild.default_role)
overwrite.send_messages = False
await ctx.channel.set_permissions(ctx.guild.default_role, overwrite=overwrite)
embedVar = discord.Embed(title=" ", description=f"<#{ctx.channel.id}> has been locked.", color=0x9b59b6)
await ctx.send(embed=embedVar)
@bot.command()
@commands.has_permissions(manage_channels=True)
async def unlock(ctx, channel : discord.TextChannel=None):
await ctx.message.delete()
overwrite = ctx.channel.overwrites_for(ctx.guild.default_role)
overwrite.send_messages = True
await ctx.channel.set_permissions(ctx.guild.default_role, overwrite=overwrite)
embedVar = discord.Embed(title=" ", description=f"<#{ctx.channel.id}> has been unlocked.", color=0x9b59b6)
await ctx.send(embed=embedVar)
bot.run(TOKEN)
它早些时候 运行 并且确实执行了没有任何错误的操作,但我不知道这里出了什么问题。它变得非常混乱。我不知道为“消息”分配什么以使其正常。这只是 Replit 还是我的代码有问题?
再说一次,我很笨,不要在评论里打死我
当你做 description=(ctx.message.author) + "Welcome to the server."
时 python 不知道如何从 User
(或 Member
)中获取字符串,你从 author
中获取message
(docs) 的字段。
您可能想要的是 ctx.message.author.mention
,它会给您一个提到作者或 author.display_name
.
的字符串
所以我对制作 Discord 机器人 和 python 还很陌生,但是,每当我尝试 运行 这个 returns 一个错误:
import os
import discord
from discord.ext import commands
import keepAlive
keepAlive.awake("https://Shulker.E1ytra.repl.co", False)
TOKEN = os.environ['TOKEN']
intents = discord.Intents().all()
bot = commands.Bot(command_prefix='?', intents=intents)
@bot.event
async def on_member_join(member):
guild = await bot.fetch_guild(958309214663622697)
role = discord.utils.get(guild.roles, name='unverified')
await member.add_roles(role)
await bot.process_commands(message)
@bot.command()
async def verf(ctx, arg):
if (arg == '51304'):
await ctx.message.delete()
member = ctx.author
role = discord.utils.get(ctx.guild.roles, name="Basement People")
await member.add_roles(role)
role = discord.utils.get(ctx.guild.roles, name="unverified")
await member.remove_roles(role)
embedVar = discord.Embed(title=" ", description=(ctx.message.author) + "Welcome to the server.", color=0x9b59b6)
await ctx.send(embed=embedVar, delete_after=5)
else:
await ctx.message.delete()
embedVar = discord.Embed(title=" ", description=(ctx.message.author) + "The secret code is invalid.", color=0x9b59b6)
await ctx.send(embed=embedVar, delete_after=5)
@bot.command()
@commands.has_permissions(kick_members=True)
async def kick(ctx, member: discord.Member, *, reason=None):
if reason == None:
reason = "N/A"
await ctx.message.delete()
await ctx.guild.kick(member)
embedVar = discord.Embed(title=" ", description=f"{member.mention} has been kicked. Reason: {reason}", color=0x9b59b6)
await ctx.send(embed=embedVar)
@bot.command()
@commands.has_permissions(ban_members=True)
async def ban(ctx, member: discord.Member, *, reason=None):
if reason == None:
reason = "N/A"
await ctx.message.delete()
await ctx.guild.ban(member)
embedVar = discord.Embed(title=" ", description=f"{member.mention} has been banned. Reason: {reason}", color=0x9b59b6)
await ctx.send(embed=embedVar)
@bot.command()
@commands.has_permissions(ban_members=True)
async def unban(ctx, member: discord.Member, *, reason=None):
if reason == None:
reason = "N/A"
await ctx.message.delete()
await ctx.guild.unban(member)
embedVar = discord.Embed(title=" ", description=f"{member.mention} has been unbanned. Reason: {reason}", color=0x9b59b6)
await ctx.send(embed=embedVar)
@bot.command()
@commands.has_permissions(manage_channels=True)
async def lock(ctx, channel : discord.TextChannel=None):
await ctx.message.delete()
overwrite = ctx.channel.overwrites_for(ctx.guild.default_role)
overwrite.send_messages = False
await ctx.channel.set_permissions(ctx.guild.default_role, overwrite=overwrite)
embedVar = discord.Embed(title=" ", description=f"<#{ctx.channel.id}> has been locked.", color=0x9b59b6)
await ctx.send(embed=embedVar)
@bot.command()
@commands.has_permissions(manage_channels=True)
async def unlock(ctx, channel : discord.TextChannel=None):
await ctx.message.delete()
overwrite = ctx.channel.overwrites_for(ctx.guild.default_role)
overwrite.send_messages = True
await ctx.channel.set_permissions(ctx.guild.default_role, overwrite=overwrite)
embedVar = discord.Embed(title=" ", description=f"<#{ctx.channel.id}> has been unlocked.", color=0x9b59b6)
await ctx.send(embed=embedVar)
bot.run(TOKEN)
它早些时候 运行 并且确实执行了没有任何错误的操作,但我不知道这里出了什么问题。它变得非常混乱。我不知道为“消息”分配什么以使其正常。这只是 Replit 还是我的代码有问题?
再说一次,我很笨,不要在评论里打死我
当你做 description=(ctx.message.author) + "Welcome to the server."
时 python 不知道如何从 User
(或 Member
)中获取字符串,你从 author
中获取message
(docs) 的字段。
您可能想要的是 ctx.message.author.mention
,它会给您一个提到作者或 author.display_name
.