微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使 Web 应用程序使用 django 收听电报频道

如何解决如何使 Web 应用程序使用 django 收听电报频道

我想提供网络应用程序来将在电报频道中发布的消息传输到另一个组。
我参考https://python.plainenglish.io/telegram-channel-listener-with-python-8176ebe3c89b实现如下。这是我在django应用程序的view.py中写的代码

def transfer(request):

    api_id = '####'
    api_hash = '####'
    user_input_channel = 'https//####'
    TOKEN = '####'
    to_group_id = '####'
    
    try:
        client = TelegramClient('anon',api_id,api_hash)
    except:
        loop = asyncio.new_event_loop()
        asyncio.set_event_loop(loop)
        client = TelegramClient('anon',api_hash,loop=loop)
    
    @client.on(events.NewMessage(chats=user_input_channel))
    async def newMessageListener(event,loop=None):
        if loop is None:
            loop = asyncio.new_event_loop()
            asyncio.set_event_loop(loop)

        #Get message
        newMessage = event.message.message
        if len(newMessage) > 0:
            print(newMessage)
            send_text(newMessage,to_group_id,TOKEN)
        else:
            print('Empty message')
    
    #client.start(bot_token = TOKEN)
    with client:
        client.run_until_disconnected()

但它不起作用。错误信息如下。

Internal Server Error: /start_transfer/
Traceback (most recent call last):
  File "/.pyenv/versions/anaconda3-5.3.1/envs/telegram_bot/lib/python3.9/site-packages/django/core/handlers/exception.py",line 47,in inner
    response = get_response(request)
  File "/.pyenv/versions/anaconda3-5.3.1/envs/telegram_bot/lib/python3.9/site-packages/django/core/handlers/base.py",line 179,in _get_response
    response = wrapped_callback(request,*callback_args,**callback_kwargs)
  File "/Documents/telegram/telegramsite/app/views.py",line 211,in transfer
    with client:
  File "/.pyenv/versions/anaconda3-5.3.1/envs/telegram_bot/lib/python3.9/site-packages/telethon/helpers.py",line 184,in _sync_enter
    return loop.run_until_complete(self.__aenter__())
  File "/.pyenv/versions/anaconda3-5.3.1/envs/telegram_bot/lib/python3.9/asyncio/base_events.py",line 642,in run_until_complete
    return future.result()
  File "/.pyenv/versions/anaconda3-5.3.1/envs/telegram_bot/lib/python3.9/site-packages/telethon/client/auth.py",line 713,in __aenter__
    return await self.start()
  File "/.pyenv/versions/anaconda3-5.3.1/envs/telegram_bot/lib/python3.9/site-packages/telethon/client/auth.py",line 140,in _start
    await self.connect()
  File "/.pyenv/versions/anaconda3-5.3.1/envs/telegram_bot/lib/python3.9/site-packages/telethon/client/telegrambaseclient.py",line 524,in connect
    self.session.auth_key = self._sender.auth_key
  File "/.pyenv/versions/anaconda3-5.3.1/envs/telegram_bot/lib/python3.9/site-packages/telethon/sessions/sqlite.py",line 180,in auth_key
    self._update_session_table()
  File "/.pyenv/versions/anaconda3-5.3.1/envs/telegram_bot/lib/python3.9/site-packages/telethon/sessions/sqlite.py",line 194,in _update_session_table
    c.execute('delete from sessions')
sqlite3.OperationalError: database is locked

我不熟悉创建网络应用,所以我需要你的帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。