我需要使用 aioflask 为我的 telegram-bot 设置 webhook。这是我的代码,我在其中设置了 webhook:
from aioflask import Flask, request
...
app = Flask(__name__)
...
@app.route('/')
async def webhook():
await bot.delete_webhook()
await bot.set_webhook(url=APP_URL)
return '!', 200
...
Run Code Online (Sandbox Code Playgroud)
但是,当我运行应用程序时,它给了我这个错误:
Traceback (most recent call last):
File "D:/Python_Projects/FilmMarketBot/check.py", line 1, in <module>
from aioflask import Flask, request
File "D:\Python_Projects\FilmMarketBot\venv\lib\site-packages\aioflask\__init__.py", line 2, in <module>
from .app import Flask
File "D:\Python_Projects\FilmMarketBot\venv\lib\site-packages\aioflask\app.py", line 14, in <module>
from .ctx import AppContext, RequestContext
File "D:\Python_Projects\FilmMarketBot\venv\lib\site-packages\aioflask\ctx.py", line 4, in <module>
from flask.ctx import AppContext as OriginalAppContext, \ …Run Code Online (Sandbox Code Playgroud) 在文档页面上Telegram 的 Web Apps 的
\n\n\n直接链接网络应用程序
\n您可以使用直接链接直接在当前\n聊天中打开 Web 应用程序。如果链接中包含非空 startapp 参数,则该参数将在 start_param 字段和 GET\n参数 tgWebAppStartParam 中传递到 Web 应用程序。
\n在此模式下,Web 应用可以使用 chat_type 和 chat_instance\n参数来跟踪当前聊天上下文。这引入了对多个聊天成员\xe2\x80\x93 并发和共享使用的支持,\n以创建实时白板、群组订单、多人游戏和类似应用程序。
\n从直接链接打开的 Web 应用程序无法访问聊天 \xe2\x80\x93,它们\n无法代表用户读取消息或发送新消息。要发送消息,用户必须重定向到内联模式并主动选择结果。
\n例子
\n\n
\n- \n
https://t.me/bot用户名/应用程序名称\n- \n
https://t.me/botusername/应用程序名称?startapp=command\n
那么,我们可以从哪里获取应用程序名称呢?有人可以解释一下吗?谢谢。
\n这是我用来向用户发送回复的示例代码(Python Telegram Bot)
conf_mes = await e.reply(
f"<a href='https://URL'>My Text</a>/n/n ..Description..",
parse_mode="html",
buttons=buts,
)
Run Code Online (Sandbox Code Playgroud)
当机器人向用户发送消息时,如何禁用网页预览!
在下面的代码中,我们如何将context.argsand传递context给另一个函数,在这种情况下callback_search_msgs
def search_msgs(update, context):
print('In TG, args', context.args)
context.job_queue.run_once(callback_search_msgs, 1, context=context, job_kwargs={'keys': context.args})
def callback_search_msgs(context, keys):
print('Args', keys)
chat_id = context.job.context
print('Chat ID ', chat_id)
def main():
updater = Updater(token, use_context=True)
dp = updater.dispatcher
dp.add_handler(CommandHandler("search_msgs",search_msgs, pass_job_queue=True,
pass_user_data=True))
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud) 我创建了一个电报机器人,它只打印我发送的消息,一切正常,直到我阻止它或从组中添加/踢它,当我这样做时,机器人不断显示此错误:
这是代码:
import telepot
from telepot.loop import MessageLoop
from pprint import pprint
import time
TOKEN="..."
def handler(msg):
content, chat, id=telepot.glance(msg)
pprint(msg)
bot=telepot.Bot(TOKEN)
bot.message_loop(handler)
while True:
time.sleep(10)
Run Code Online (Sandbox Code Playgroud)
我也尝试过使用该getUpdates功能,它会不断打印所有消息,甚至是旧的已删除消息。我认为问题是由“存储”消息引起的,但我不知道如何解决它。
我在用着:
我有一个 python 脚本,其中将消息记录到控制台。但我也希望使用我的机器人将这些消息发送到电报。
任何提示和建议都会有所帮助。提前致谢。
我还没有尝试过任何事情,只是想知道这是否可能,如果可能的话怎么办?