【问题标题】:How to send python output to telegram CHANNEL not to Group and gmail email group如何将python输出发送到电报频道而不是组和gmail电子邮件组
【发布时间】:2019-03-31 18:58:06
【问题描述】:

您好,我有一个 Python 程序,它每隔一小时生成一次结果。结果可以是任何东西。此程序将在本地计算机或虚拟专用网络中运行。

我有两个要求 1. 将这个python生成的结果自动发送到一个电报组[组名“ourworld”](由我创建),无需用户干预。 (我正在运行桌面电报客户端或在同一系统中运行 web.telegram.org)

  1. 将此结果发送到 gmail 群组电子邮件 ID。

有哪些方法可以实现这一要求。是否有任何工作代码可用于完成这项工作。请分享信息和详细信息。

编辑:

我面临的问题:

1.使用 BotFather 创建了一个 Bot。 2.将此机器人添加到我的组,这里我收到错误无法添加成员所以将机器人添加为组中的管理员 3.记下BOT的Token。 4.尝试获取ChatId 在这个论坛 (https://web.telegram.org/#/im?p=g154513121) 有人说 p=g 之后的数字是 chartid ,在我的情况下没有 数字它显示像这样的@testingname。

  1. 使用此方法尝试获取聊天 ID https://api.telegram.org/bot738909732:AAE-2l7xAAlYHBXprK_a_bex09g9DMZbbDI/getme 所以这里 738909732 成为一个聊天 ID(在这种情况下,为什么我们需要单独 要求图表ID) 这是真的,因为回应来了!这里的聊天 ID 是我的“testingname”的 ID,没有为该组生成的图表 ID。 6.现在打包 URL 以查看我收到此错误的响应。

https://api.telegram.org/bot738909732:AAE-2l7xAAlYHBXprK_a_bex09g9DMZbbDI/sendMessage?chat_id=738909732&text=testing

我在浏览器中运行时的输出

{"ok":false,"error_code":400,"description":"错误请求:不聊天 找到"} {"ok":false,"error_code":403,"description":"禁止:机器人 无法向机器人发送消息"}

如何解决此问题并使 BOT 正常工作。为什么我无法将 BOT 添加到显示错误“无法添加用户”的组中

如何使这个电报组工作。

注意:使用BotFather BOT创建

【问题讨论】:

  • 你看过电报api了吗?
  • @marx-babu 首先尝试从 Telegram dekstop 客户端/移动端向群组发送消息。然后在您的浏览器中输入地址 api.telegram.org/bot<token>/getUpdates ,其中 token 是您在生成时收到的机器人令牌。然后您将能够看到您的聊天ID。记住chat-id 将是负数。正如我之前提到的
  • getupdates 给出了我尝试过的正确信息,结果是这样,在第 5 步之后它失败了 {"ok":true,"result":{"id":738909xxx,"is_bot":true, "first_name":"xxxx","username":"xxxx_bot"}}
  • @marx-babu 你得到聊天ID了吗
  • 有什么方法可以与您联系以解决此问题,我得到了聊天 ID。它在 {{}}

标签: python python-3.x email telegram telegram-bot


【解决方案1】:

我让它在树莓派上运行。你必须寻找botfather来获得你的电报令牌。

import telepot 
from telepot.loop import MessageLoop
telegram_token = 'xxxx:xxxxxx'
user = 4444444
bot = telepot.Bot(telegram_token)
bot.sendMessage(user, 'Hey!')

关于配置 gmail,我现在没有东西...

【讨论】:

  • 正如在原始帖子的编辑中发布的那样,我收到了奇怪的错误代码。请您检查一下为什么会出现错误
  • 你是用 botfather 给出的令牌替换 吗?如果您不知道该怎么做,请告诉我。 Anthor 尝试 urlencode(text) 或将“sendmessage”替换为“/sendmessage/”
【解决方案2】:

要在没有任何用户干预的情况下向电报“组”发送消息,您需要一个电报机器人。使用电报 bot-father 创建一个。看看这个link。在创建机器人时还要注意令牌。此方法仅适用于电报组。电报频道要遵循的另一种方法,MarxBabu 在下面的答案中回答了该方法。

import requests

# telegram url
url = "https://api.telegram.org/bot<Token>"

def send_mess(text):
    params = {'chat_id':-xxxxxxx, 'text': text}
    response = requests.post(url + 'sendMessage', data=params)
    return response


send_mess(result_you_want_to_send) 

要获取chat_id,请按照here 中提到的步骤操作。注意:群聊 id 总是以 '-' 开头。例如群聊_id -356163873。令牌和 chat_id 只是您向电报组发送消息所需的。

要发送群组电子邮件,您必须搜索更多,因为我不太了解

【讨论】:

  • 感谢您的回复,我在同一篇文章的“编辑”中发布了这个问题,这是一个奇怪的问题。你能帮我看看为什么会这样吗?
  • 什么是chat-id
  • 如何通过 bot 向频道发送消息?
【解决方案3】:

您可以通过 SMTP 或使用 Mailgun Api 在 python 中发送电子邮件

我个人更喜欢使用 Mailgun,因为它更容易设置,并且发送电子邮件就像向 mailgun 发送发布请求一样简单。 您可以获得免费版本的 api 并将您的群组电子邮件 ID 添加到沙箱(以避免垃圾邮件),然后使用请求发布带有给定 api 令牌的电子邮件

【讨论】:

    【解决方案4】:

    如果要向电报组发送消息,则 bipin_s 提供的上述方法适用于使用 chat_id = -xxxxxx 的情况。这是正确的 id 后跟 - 符号。

    对于在“电报频道”中发布消息,需要在 URL 中进行微小的更改。URL 必须如下所示。

    url = "https://api.telegram.org/botTokenID/sendMessage?chat_id=@yourChannelChatID&text=message"

    将 TokenID 替换为您的 BOT tokenID 将 yourChannelChatID 替换为您的频道图表 ID。请注意,频道 ID 不是负 ID。

    代码如下所示

    import request
    
    url = "https://api.telegram.org/botXyz:wwwwDFSJSJSAX/sendMessage?chat_id=@telechanneltesting&text=message"
    requests.post(url)
    

    这里的“消息”在 URL 中将发布在电报频道中。

    如何获取频道 ID ? 在浏览器中转到https://web.telegram.org/#/im,登录后现在搜索您的“频道”。现在在浏览器地址栏中您将看到一个链接,如https://web.telegram.org/#/im?p=@llliopppppsssssr

    p=@llliopppppsssssr 在等号后面是频道聊天 ID。

    【讨论】:

    • 当要发送的字符串包含符号+ 时会出现一个小问题,例如在运行此命令时requests.post("https://api.telegram....&amp;text=test+8") 发送到电报的消息只是test8 而在Python 上我得到了此消息&lt;Response [200]&gt;。怎么回事?
    猜你喜欢
    • 2018-02-08
    • 2018-12-05
    • 2021-04-25
    • 2016-09-09
    • 2019-07-04
    • 1970-01-01
    • 2016-03-22
    • 2013-12-18
    • 2020-07-13
    相关资源
    最近更新 更多