My Discord Bot Returns "AttributeError: 'str' object has no attribute"
My Discord Bot Returns "AttributeError: 'str' object has no attribute"
我正在 Python 上构建一个简单的 discord 机器人,将 space 放在输入的每个字符和其他一些东西之间。
我的代码在这里:
import discord
import asyncio
client = discord.Client()
def bos(a):
a=a.upper()
a=a.replace("0", "SIFIR")
a=a.replace("1", "BİR")
a=a.replace("2", "İKİ")
a=a.replace("3", "ÜÇ")
a=a.replace("4", "DÖRT")
a=a.replace("5", "BEŞ")
a=a.replace("6", "ALTI")
a=a.replace("7", "YEDİ")
a=a.replace("8", "SEKİZ")
a=a.replace("9", "DOKUZ")
a=" ".join(a)
@client.event
async def on_ready():
print('Logged in as')
print(client.user.name)
print(client.user.id)
print('------')
@client.event
async def on_message(message):
if message.content.startswith('*'):
a = message.content[1:]
await client.send_message(message.channel, a.bos(a))
#counter = 0
#tmp = await client.send_message(message.channel, 'Calculating messages...')
#async for log in client.logs_from(message.channel, limit=100):
# if log.author == message.author:
# counter += 1
#await client.edit_message(tmp, 'You have {} messages.'.format(counter))
#elif message.content.startswith('!sleep'):
#await asyncio.sleep(5)
#await client.send_message(message.channel, 'Done sleeping')
client.run('token')
但是当我在 discord 上写 *test
时,终端 returns:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/discord/client.py", line 307, in _run_event
yield from getattr(self, event)(*args, **kwargs)
File "bot2.py", line 32, in on_message
await client.send_message(message.channel, a.bos(a))
AttributeError: 'str' object has no attribute 'bos'
有人可以帮我修复这段代码吗?
bos
不是 str
上的方法;这是一个全局作用域的函数。而不是 a.bos(a)
,只需使用 bos(a)
.
bos
是常规函数,而不是 str
方法。此外,在函数内部分配给 a
不会影响调用外部的参数;您需要 return 一个新字符串。
def bos(a):
return " ".join(a.upper().
replace("0", "SIFIR").
replace("1", "BİR").
replace("2", "İKİ").
replace("3", "ÜÇ").
replace("4", "DÖRT").
replace("5", "BEŞ").
replace("6", "ALTI").
replace("7", "YEDİ").
replace("8", "SEKİZ").
replace("9", "DOKUZ"))
...
await client.send_message(message.channel, bos(a))
# ^^^^^^
我正在 Python 上构建一个简单的 discord 机器人,将 space 放在输入的每个字符和其他一些东西之间。
我的代码在这里:
import discord
import asyncio
client = discord.Client()
def bos(a):
a=a.upper()
a=a.replace("0", "SIFIR")
a=a.replace("1", "BİR")
a=a.replace("2", "İKİ")
a=a.replace("3", "ÜÇ")
a=a.replace("4", "DÖRT")
a=a.replace("5", "BEŞ")
a=a.replace("6", "ALTI")
a=a.replace("7", "YEDİ")
a=a.replace("8", "SEKİZ")
a=a.replace("9", "DOKUZ")
a=" ".join(a)
@client.event
async def on_ready():
print('Logged in as')
print(client.user.name)
print(client.user.id)
print('------')
@client.event
async def on_message(message):
if message.content.startswith('*'):
a = message.content[1:]
await client.send_message(message.channel, a.bos(a))
#counter = 0
#tmp = await client.send_message(message.channel, 'Calculating messages...')
#async for log in client.logs_from(message.channel, limit=100):
# if log.author == message.author:
# counter += 1
#await client.edit_message(tmp, 'You have {} messages.'.format(counter))
#elif message.content.startswith('!sleep'):
#await asyncio.sleep(5)
#await client.send_message(message.channel, 'Done sleeping')
client.run('token')
但是当我在 discord 上写 *test
时,终端 returns:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/discord/client.py", line 307, in _run_event
yield from getattr(self, event)(*args, **kwargs)
File "bot2.py", line 32, in on_message
await client.send_message(message.channel, a.bos(a))
AttributeError: 'str' object has no attribute 'bos'
有人可以帮我修复这段代码吗?
bos
不是 str
上的方法;这是一个全局作用域的函数。而不是 a.bos(a)
,只需使用 bos(a)
.
bos
是常规函数,而不是 str
方法。此外,在函数内部分配给 a
不会影响调用外部的参数;您需要 return 一个新字符串。
def bos(a):
return " ".join(a.upper().
replace("0", "SIFIR").
replace("1", "BİR").
replace("2", "İKİ").
replace("3", "ÜÇ").
replace("4", "DÖRT").
replace("5", "BEŞ").
replace("6", "ALTI").
replace("7", "YEDİ").
replace("8", "SEKİZ").
replace("9", "DOKUZ"))
...
await client.send_message(message.channel, bos(a))
# ^^^^^^