My Discord Bot返回“AttributeError:'str'object has no attribute”

2024-04-26 03:30:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在Python上构建一个简单的discord bot,以便在输入的每个字符和其他一些东西之间留出空间。在

我的代码在这里:

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时,终端返回:

^{pr2}$

有人能帮我修正这个代码吗?在


Tags: 代码importclientsendasynciomessageasyncdef
2条回答

bos是一个正则函数,而不是str方法。此外,在函数内部给a赋值不会影响调用之外的参数;您需要返回一个新的字符串。在

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))
#                                          ^^^^^^

bos不是str上的方法;它是一个全局范围的函数。不用a.bos(a),只需使用bos(a)。在

相关问题 更多 >

    热门问题