向 Telegram 发送消息
环境信息
- Centos 7
- Python 3
在 Telegram 中生成 Bot
首先在 telegram 中搜索
@BotFather
,和其对话,根据提示创建 机器人,记录下生成的token
信息创建新的 Channel 或者 Group 或者将刚刚新建的 Bot 加入已有的 Channel/Group。
获取 ChatGroup ID,可以使用以下方法之一
添加机器人
@get_id_bot
到 Channel,会自动显示Chat ID
使用以下代码获取
>> import requests
>> response = requests.get(f'https://api.telegram.org/bot{token}/getUpdates')
>> data = response.json()
>> chat_id = data['result'][0]['message']['chat']['id']
>> chat_id
-992754669
使用 curl 向 telegram 发送消息
curl -v "https://api.telegram.org/bot{token}/sendMessage?text=sa&chat_id=-992754669" |
使用 python 向 telegram 发送消息
使用 requests 库
>> import requests |
使用 telegram 库
需要安装 python-telegram-bot
pip install --upgrade python-telegram-bot |
发送消息代码
>> import telegram |
如果需要在非异步环境中(例如 Django 试图函数) 运行以上异步代码,会报错: RuntimeError: There is no current event loop in thread 'Thread-1'
。需要特殊处理,可以使用 asyncio.run()
函数来运行异步代码,它可以在非异步环境中创建一个新的事件循环并运行异步函数。
Django 视图中参考代码如下
def send_message_to_tg(chat_id: int, text: str): |