Asynchronous 与“异步”;如果事件循环正在运行

Asynchronous 与“异步”;如果事件循环正在运行,asynchronous,async-await,telethon,telepot,Asynchronous,Async Await,Telethon,Telepot,我正在用电传机和电视马拉松写我的第一个电报机器人 我的主要代码是: import sys import asyncio import random import telepot import telepot.aio from telepot.aio.loop import MessageLoop from telepot.namedtuple import ReplyKeyboardMarkup, KeyboardButton, ReplyKeyboardRemove, ForceReply f

我正在用电传机和电视马拉松写我的第一个电报机器人 我的主要代码是:

import sys
import asyncio
import random
import telepot
import telepot.aio
from telepot.aio.loop import MessageLoop
from telepot.namedtuple import ReplyKeyboardMarkup, KeyboardButton, ReplyKeyboardRemove, ForceReply
from telepot.namedtuple import InlineKeyboardMarkup, InlineKeyboardButton
from telepot.namedtuple import InlineQueryResultArticle, InlineQueryResultPhoto, InputTextMessageContent


async def on_chat_message(msg):

    global listenFromKeyboardUsername, listenFromKeyboardPassword, listenFromKeyboardLinkGroup

    content_type, chat_type, chat_id = telepot.glance(msg)
    chat_id = str(chat_id)

    if content_type == 'text':

        name = msg["from"]["first_name"]
        txt = msg['text']

        # stuff..

        elif userExistsInDb and userData['listenFromKeyboardLinkGroup'] and chat_id == doc.id:


            group = telegramGetMessages.checkGroup(txt)
            print(group)


TOKEN = "*******"

bot = telepot.aio.Bot(TOKEN)
answerer = telepot.aio.helper.Answerer(bot)

loop = asyncio.get_event_loop()
loop.create_task(MessageLoop(bot, {'chat': on_chat_message,
                                   'callback_query': on_callback_query}).run_forever())
print('Listening ...')

loop.run_forever()
根据上面的代码,我调用checkGroup函数:

def checkGroup(hash):
    initClient()
    global result

    hash = hash.replace('https://t.me/joinchat/', '')
    with TelegramClient(name, api_id, api_hash) as client:
        result = client(functions.messages.CheckChatInviteRequest(hash=hash))

    if isinstance(result, ChatInvite):
        print('You are not inside the group')
        with TelegramClient(name, api_id, api_hash) as client:
            client(functions.messages.ImportChatInviteRequest(hash=hash))
            result = client(functions.messages.CheckChatInviteRequest(hash=hash))


    return result
我得到这个错误的地方:

 RuntimeError: You must use "async with" if the event loop is running (i.e. you are inside an "async def")
然后我用
异步def checkGroup(hash):…

but now I'm geting this error and I don't know what to do:
Task exception was never retrieved
future: <Task finished coro=<Router.route() done, defined at /home/ale/PycharmProjects/newTelegramBot/venv/lib/python3.6/site-packages/telepot/aio/helper.py:213> exception=NotFound('No document to update: projects/telegram-bot-4ee9f/databases/(default)/documents/users/585089661/data/groups',)>
Traceback (most recent call last):
  File "/home/ale/PycharmProjects/newTelegramBot/venv/lib/python3.6/site-packages/google/api_core/grpc_helpers.py", line 57, in error_remapped_callable
    return callable_(*args, **kwargs)
  File "/home/ale/PycharmProjects/newTelegramBot/venv/lib/python3.6/site-packages/grpc/_channel.py", line 549, in __call__
    return _end_unary_response_blocking(state, call, False, None)
  File "/home/ale/PycharmProjects/newTelegramBot/venv/lib/python3.6/site-packages/grpc/_channel.py", line 466, in _end_unary_response_blocking
    raise _Rendezvous(state, None, None, deadline)
grpc._channel._Rendezvous: <_Rendezvous of RPC that terminated with:
    status = StatusCode.NOT_FOUND
    details = "No document to update: projects/telegram-bot-4ee9f/databases/(default)/documents/users/585089661/data/groups"
    debug_error_string = "{"created":"@1552727386.760400590","description":"Error received from peer","file":"src/core/lib/surface/call.cc","file_line":1039,"grpc_message":"No document to update: projects/telegram-bot-4ee9f/databases/(default)/documents/users/585089661/data/groups","grpc_status":5}"
>

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/ale/PycharmProjects/newTelegramBot/venv/lib/python3.6/site-packages/telepot/aio/helper.py", line 244, in route
    return await _invoke(fn, msg, *args, **kwargs)
  File "/home/ale/PycharmProjects/newTelegramBot/venv/lib/python3.6/site-packages/telepot/aio/helper.py", line 16, in _invoke
    return await fn(*args, **kwargs)
  File "/home/ale/PycharmProjects/newTelegramBot/chatAsync.py", line 119, in on_chat_message
    database.updateUserData(chat_id, 'groups', 'nameGroup', txt)
  File "/home/ale/PycharmProjects/newTelegramBot/database.py", line 38, in updateUserData
    field: key,
  File "/home/ale/PycharmProjects/newTelegramBot/venv/lib/python3.6/site-packages/google/cloud/firestore_v1beta1/document.py", line 371, in update
    write_results = batch.commit()
  File "/home/ale/PycharmProjects/newTelegramBot/venv/lib/python3.6/site-packages/google/cloud/firestore_v1beta1/batch.py", line 148, in commit
    metadata=self._client._rpc_metadata,
  File "/home/ale/PycharmProjects/newTelegramBot/venv/lib/python3.6/site-packages/google/cloud/firestore_v1beta1/gapic/firestore_client.py", line 946, in commit
    request, retry=retry, timeout=timeout, metadata=metadata
  File "/home/ale/PycharmProjects/newTelegramBot/venv/lib/python3.6/site-packages/google/api_core/gapic_v1/method.py", line 143, in __call__
    return wrapped_func(*args, **kwargs)
  File "/home/ale/PycharmProjects/newTelegramBot/venv/lib/python3.6/site-packages/google/api_core/retry.py", line 270, in retry_wrapped_func
    on_error=on_error,
  File "/home/ale/PycharmProjects/newTelegramBot/venv/lib/python3.6/site-packages/google/api_core/retry.py", line 179, in retry_target
    return target()
  File "/home/ale/PycharmProjects/newTelegramBot/venv/lib/python3.6/site-packages/google/api_core/timeout.py", line 214, in func_with_timeout
    return func(*args, **kwargs)
  File "/home/ale/PycharmProjects/newTelegramBot/venv/lib/python3.6/site-packages/google/api_core/grpc_helpers.py", line 59, in error_remapped_callable
    six.raise_from(exceptions.from_grpc_error(exc), exc)
  File "<string>", line 3, in raise_from
google.api_core.exceptions.NotFound: 404 No document to update: projects/telegram-bot-4ee9f/databases/(default)/documents/users/585089661/data/groups
/usr/lib/python3.6/asyncio/base_events.py:1441: RuntimeWarning: coroutine 'checkGroup' was never awaited
  handle = None  # Needed to break cycles when an exception occurs.
但现在我遇到了这个错误,我不知道该怎么办:
从未检索到任务异常
未来:
回溯(最近一次呼叫最后一次):
文件“/home/ale/PycharmProjects/newTelegramBot/venv/lib/python3.6/site packages/google/api_core/grpc_helpers.py”,第57行,错误\u重新映射\u可调用
返回可调用函数(*args,**kwargs)
文件“/home/ale/PycharmProjects/newTelegramBot/venv/lib/python3.6/site packages/grpc/_channel.py”,第549行,在调用中__
返回\u结束\u一元\u响应\u阻塞(状态、调用、错误、无)
文件“/home/ale/PycharmProjects/newTelegramBot/venv/lib/python3.6/site packages/grpc/_channel.py”,第466行,一元响应
提升集合点(状态,无,无,截止日期)
grpc._通道_会合点:
上述异常是以下异常的直接原因:
回溯(最近一次呼叫最后一次):
文件“/home/ale/PycharmProjects/newTelegramBot/venv/lib/python3.6/site packages/telepot/aio/helper.py”,第244行,在路线中
返回等待调用(fn、msg、*args、**kwargs)
文件“/home/ale/PycharmProjects/newTelegramBot/venv/lib/python3.6/site packages/telepot/aio/helper.py”,第16行,在
返回等待fn(*args,**kwargs)
文件“/home/ale/PycharmProjects/newTelegramBot/chatAsync.py”,在线聊天信息第119行
database.updateUserData(聊天室id,'groups','nameGroup',txt)
updateUserData中的第38行文件“/home/ale/PycharmProjects/newTelegramBot/database.py”
字段:键,
文件“/home/ale/PycharmProjects/newTelegramBot/venv/lib/python3.6/site packages/google/cloud/firestore\u v1beta1/document.py”,第371行,更新中
write_results=batch.commit()
提交文件“/home/ale/PycharmProjects/newTelegramBot/venv/lib/python3.6/site packages/google/cloud/firestore\u v1beta1/batch.py”,第148行
metadata=self.\u client.\u rpc\u metadata,
提交中的文件“/home/ale/PycharmProjects/newTelegramBot/venv/lib/python3.6/site packages/google/cloud/firestore\u v1beta1/gapic/firestore\u client.py”,第946行
请求,重试=重试,超时=超时,元数据=元数据
文件“/home/ale/PycharmProjects/newTelegramBot/venv/lib/python3.6/site packages/google/api_core/gapic_v1/method.py”,第143行,在调用中__
返回包装函数(*args,**kwargs)
文件“/home/ale/PycharmProjects/newTelegramBot/venv/lib/python3.6/site packages/google/api_core/retry.py”,第270行,在retry_-wrapped_函数中
on_错误=on_错误,
文件“/home/ale/PycharmProjects/newTelegramBot/venv/lib/python3.6/site packages/google/api_core/retry.py”,第179行,在retry_目标中
返回目标()
文件“/home/ale/PycharmProjects/newTelegramBot/venv/lib/python3.6/site packages/google/api_core/timeout.py”,第214行,func_格式,带超时
返回函数(*args,**kwargs)
文件“/home/ale/PycharmProjects/newTelegramBot/venv/lib/python3.6/site packages/google/api_core/grpc_helpers.py”,第59行,错误\u重新映射\u可调用
六、从(例外情况。从grpc错误(exc),exc)
文件“”,第3行,从
google.api_core.exceptions.NotFound:404无需更新文档:projects/telegrame-bot-4ee9f/databases/(默认值)/documents/users/585089661/data/groups
/usr/lib/python3.6/asyncio/base_events.py:1441:RuntimeWarning:coroutine“checkGroup”从未等待过
handle=None#发生异常时需要中断周期。
我正在四处阅读,也许对于这个问题,最好使用delegatoBot,但我不是很确定,因为我找不到很好的例子! 如果你有什么需要的话,请尽管问,我会很高兴收到你的回复!
谢谢

当您在代码中使用协同路由方法(如聊天信息(msg)上的
async def
)时,您必须在此声明上调用
waitiable
方法,但显然,您的聊天信息上的
检查组
函数都没有
可等待的
任务。当您使用协同路由方法(如代码中的聊天信息(msg)
上的
异步定义)时,您必须在此声明上调用
可等待的
方法,但显然,您的
聊天信息
检查组
功能都没有可等待的
任务。