使用 Discord.py 发送带有权限的嵌入频道会引发异常
Sending an Embed in channel with permission using Discord.py raises exceptions
首先,如果我做错了什么,我很抱歉。这是我的第一个问题。
我目前正在尝试使用 Python.
创建 Discord Bot
编辑:虽然一个人的回答对我帮助很大,但我的问题仍然存在,因为我仍然有“await coro”异常,我更正后又抛出另一个旧的错误。我已经更新了代码和例外。感谢您的帮助!
当我尝试在机器人加入服务器时发送嵌入时,出现了两个异常。由于我没有 50 台服务器,当在频道中写入内容时,我将 on_member_join(self) 替换为一个简单的函数调用:
- 文件“...\Python\Python39\lib\site-packages\discord\client.py”
等待 coro(*args, **kwargs)
- TypeError:on_message() 缺少 1 个必需的位置参数:'ctx'
虽然在Whosebug上看了视频和搜索,但对ctx还是没有完全理解。这可能就是我犯这个错误的原因。如果你能帮我更正代码甚至解释一下 ctx 是什么(它像 java 中的“this”吗?),那就太好了!
下面是尝试发送嵌入的两个函数的代码:
import discord
from discord.utils import get
from discord.ext import commands
Bot_prefix = "<" #Later used before every command
class MyClient(discord.Client):
async def Joining_Server(ctx, self):
#Get channel by name:
channel = get(ctx.guild.text_channels, name="Channel Name")
#Get channel by ID:
channels_Ids = get(ctx.guild.text_channels, id=discord.channel_id)
embed = discord.Embed(title="Thanks for adding me!", description="Try")
fields = [("Prefix", "My prefix is <. Just write it in front of every command!", True),
("Changing prefix", "Wanna change my prefix? Just write \"<change_prefix\" and the prefix you want, such as: \"<change_prefix !\"", True),
("Commands", "For a list of the most important commands type \"<help\"", False),
("Help", "For more help, type \"<help_All\" or visit:", True)]
for channels in self.channel_Ids:
if(commands.has_permissions(write=True)):
channel_verified = channels.id
await ctx.channel_verified.send(embed)
async def on_message(message, self, ctx):
if message.author == client.user:
return
if message.content == "test":
await MyClient.Joining_Server(ctx, self)
谢谢你帮助我!再次:如果我做错了什么,我很抱歉,这是我的第一个问题。请询问您是否需要什么。反馈也会很有帮助。
我认为您只是想将消息的内容与 "test"
字符串
进行比较
if message.author == client.user:
return
if message.content == "test":
await MyClient.Joining_Server()
首先,如果我做错了什么,我很抱歉。这是我的第一个问题。 我目前正在尝试使用 Python.
创建 Discord Bot编辑:虽然一个人的回答对我帮助很大,但我的问题仍然存在,因为我仍然有“await coro”异常,我更正后又抛出另一个旧的错误。我已经更新了代码和例外。感谢您的帮助!
当我尝试在机器人加入服务器时发送嵌入时,出现了两个异常。由于我没有 50 台服务器,当在频道中写入内容时,我将 on_member_join(self) 替换为一个简单的函数调用:
- 文件“...\Python\Python39\lib\site-packages\discord\client.py” 等待 coro(*args, **kwargs)
- TypeError:on_message() 缺少 1 个必需的位置参数:'ctx'
虽然在Whosebug上看了视频和搜索,但对ctx还是没有完全理解。这可能就是我犯这个错误的原因。如果你能帮我更正代码甚至解释一下 ctx 是什么(它像 java 中的“this”吗?),那就太好了!
下面是尝试发送嵌入的两个函数的代码:
import discord
from discord.utils import get
from discord.ext import commands
Bot_prefix = "<" #Later used before every command
class MyClient(discord.Client):
async def Joining_Server(ctx, self):
#Get channel by name:
channel = get(ctx.guild.text_channels, name="Channel Name")
#Get channel by ID:
channels_Ids = get(ctx.guild.text_channels, id=discord.channel_id)
embed = discord.Embed(title="Thanks for adding me!", description="Try")
fields = [("Prefix", "My prefix is <. Just write it in front of every command!", True),
("Changing prefix", "Wanna change my prefix? Just write \"<change_prefix\" and the prefix you want, such as: \"<change_prefix !\"", True),
("Commands", "For a list of the most important commands type \"<help\"", False),
("Help", "For more help, type \"<help_All\" or visit:", True)]
for channels in self.channel_Ids:
if(commands.has_permissions(write=True)):
channel_verified = channels.id
await ctx.channel_verified.send(embed)
async def on_message(message, self, ctx):
if message.author == client.user:
return
if message.content == "test":
await MyClient.Joining_Server(ctx, self)
谢谢你帮助我!再次:如果我做错了什么,我很抱歉,这是我的第一个问题。请询问您是否需要什么。反馈也会很有帮助。
我认为您只是想将消息的内容与 "test"
字符串
if message.author == client.user:
return
if message.content == "test":
await MyClient.Joining_Server()