Python,更改变量类型

Python,更改变量类型,python,discord,discord.py,Python,Discord,Discord.py,我有一个字符串变量,比如name='Mark',我想将当前为字符串的变量类型更改为与模块一起导入的类型。类型是 我已经尝试使用下面的代码,但是它给了我下面看到的错误。 代码: 我得到以下错误: Traceback (most recent call last): File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/client.py", line 343, in _run_event

我有一个字符串变量,比如name='Mark',我想将当前为字符串的变量类型更改为与模块一起导入的类型。类型是 我已经尝试使用下面的代码,但是它给了我下面看到的错误。 代码:

我得到以下错误:

Traceback (most recent call last):
  File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/client.py", line 343, in _run_event
    await coro(*args, **kwargs)
  File "main.py", line 161, in on_message
    msgch = discord.channel.TextChannel('mark')
TypeError: __init__() takes 1 positional argument but 2 were given

如果我明白你想做什么,你就是想从他的名字中检索一个频道。不幸的是,这是不可能的,因为多个频道可能具有相同的名称。您需要获得频道id,然后才能执行以下操作:

chan_id = 0000 # This is the id of the channel.
msgch = await bot.fetch_channel(chan_id)

看起来你想用这个。下面是一个有效的命令示例:

@bot.command()
异步def转换_通道(ctx,通道:discord.TextChannel):
...
:discord.TextChannel
告诉discord.py获取输入(频道id、频道名称、频道名称)并将其转换为TextChannel。背景中真正发生的是:

user_input=…#来自命令的用户输入
channel\u object=wait command.TextChannelConverter.convert(ctx,用户输入)
这在命令之外不容易使用,因为它需要
ctx
对象。如果在
on_message
事件中使用此选项,则可以执行以下操作:

@bot.event
异步def on_消息(消息):
ctx=等待bot.get_上下文(消息)
channel=wait commands.TextChannelConverter.convert(ctx,message.content)

否则,您必须自定义
convert
的源代码,使其不需要上下文对象。你可以找到它

你真的不清楚你想做什么。该类的源位于,您不需要手动创建这些类。get_通道不是一个协程,它不应该等待。我的意思是编写fetch_通道,我的faultUnboundLocalError:在分配之前引用了局部变量“client”,我将bot更改为client,因为我使用的是client而不是bot client。run(os.getenv('TOKEN'))我犯了一个错误,请查找更新的代码。您所犯的错误是因为您的客户端变量未定义,请确保您将正确的变量名替换为我尝试过的“bot”,但仍然是完全相同的错误
chan_id = 0000 # This is the id of the channel.
msgch = await bot.fetch_channel(chan_id)