“NoneType”对象在尝试使用googletrans库为discord机器人进行翻译时没有属性“group”

2024-09-30 01:35:44 发布

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

我在尝试翻译邮件内容时出错(请注意,我确实导入了此邮件的最新版本:https://pypi.org/project/googletrans/),我检查了足够多的时间,我认为我做得正确

完整代码:

import discord, googletrans, os, dotenv
from discord.ext import commands
from dotenv import load_dotenv
from googletrans import Translator

load_dotenv()
translate = Translator()
prefix = 'tb!'
bot = commands.Bot(command_prefix=prefix)
bot.remove_command("help")
client = discord.Client()
TOKEN = os.getenv('TOKEN')
#translationch = 822024643468460042

@bot.event
async def on_ready():
    print(f'{bot.user.name} connected to Discord!')
    await bot.change_presence(activity=discord.Game(name=f"Translating..."))

@bot.listen()
async def on_message(msg):
    print(msg.content)
    if msg.content == "": return
    text_ = translate.translate(msg.content)
    if text_.text == msg.content: return
    else:
        embed=discord.Embed(title="Translating...", description="Just a second...", color=0x545454)
        msg = await msg.channel.send(embed=embed)
        try:
            emb=discord.Embed(title="Translation", color=0x00ff08)
            emb.add_field(name=f"Sent by {msg.author}", value=f"`{msg.content}`\n`{text_.text}`", inline=False)
            emb.set_footer(text=f"Sent from channel #{msg.channel.name}")
            await msg.edit(embed=emb)
        except:
            i = msg.content
            if i > 1800: i = "The message was too long to display!"
            error=discord.Embed(color=0xff0000)
            error.add_field(name="Error!", value=f"I couldn't translate **{msg.author}**'s message: `{i}`", inline=False) 
            await msg.edit(embed=error)
            return

bot.run(TOKEN)

我得到的错误是:

Ignoring exception in on_message
Traceback (most recent call last):
  File "C:\Users\borny\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\client.py", line 312, in _run_event
    await coro(*args, **kwargs)
  File "c:/Users/borny/Desktop/stuff/vscode_projects/translate-bot/main.py", line 24, in on_message
    translate.translate(msg.content)
  File "C:\Users\borny\AppData\Local\Programs\Python\Python38\lib\site-packages\googletrans\client.py", line 182, in translate
    data = self._translate(text, dest, src, kwargs)
  File "C:\Users\borny\AppData\Local\Programs\Python\Python38\lib\site-packages\googletrans\client.py", line 78, in _translate
    token = self.token_acquirer.do(text)
  File "C:\Users\borny\AppData\Local\Programs\Python\Python38\lib\site-packages\googletrans\gtoken.py", line 194, in do
    self._update()
  File "C:\Users\borny\AppData\Local\Programs\Python\Python38\lib\site-packages\googletrans\gtoken.py", line 62, in _update
    code = self.RE_TKK.search(r.text).group(1).replace('var ', '')
AttributeError: 'NoneType' object has no attribute 'group'

Tags: textnameinpybotlinemsgcontent
1条回答
网友
1楼 · 发布于 2024-09-30 01:35:44

好的,使用这个(固定库)解决了我的问题:https://pypi.org/project/google-trans-new/

还有一个发布的关于官方googletrans库的alpha,它修补了这个bug,你可以在这个线程中找到更多关于它的信息:googletrans stopped working with error 'NoneType' object has no attribute 'group'

新代码:

import discord, google_trans_new, os, dotenv
from discord.ext import commands
from dotenv import load_dotenv
from google_trans_new import google_translator  

load_dotenv()
translate = google_translator()
prefix = 'tb!'
bot = commands.Bot(command_prefix=prefix)
bot.remove_command("help")
client = discord.Client()
TOKEN = os.getenv('TOKEN')
translationch = 822024643468460042

@bot.event
async def on_ready():
    print(f'{bot.user.name} connected to Discord!')
    await bot.change_presence(activity=discord.Game(name=f"Translating..."))

@bot.listen()
async def on_message(msg):
    if msg.content == "": return
    text_ = translate.translate(msg.content)[:-1]
    if text_ == msg.content: return
    else:
        embed=discord.Embed(title="Translating...", description="Just a second...", color=0x545454)
        msg_ = await msg.channel.send(embed=embed)
        try:
            emb=discord.Embed(title="Translated!", color=0x00ff08)
            emb.add_field(name=f"Sent by {msg.author}", value=f"`Text: {msg.content}`\n`Translation: {text_}`", inline=False)
            await msg_.edit(embed=emb)
        except:
            i = msg.content
            if len(i) > 1800: i = "The message was too long to display!"
            error=discord.Embed(color=0xff0000)
            error.add_field(name="Error!", value=f"I couldn't translate **{msg.author}**'s message: `{i}`", inline=False) 
            await msg_.edit(embed=error)
            return

bot.run(TOKEN)

相关问题 更多 >

    热门问题