如何使用Python构建Telegram机器人来生成随机引语

news2024/11/26 16:22:49

使用Python构建Telegram机器人以生成随机引语

聊天机器人是用于进行在线聊天对话的软件应用程序,通过文本或文本转语音的方式实现客户服务的自动化。[聊天机器人]可以用于提醒、预约等事情,也可以在社交媒体平台上使用。

在本教程中,我们将建立一个简单的Telegram机器人,使用Python每隔一段时间向Telegram组发送自动编程报价。

[Telegram]是一个[免费的、开源的]、跨平台的、基于云的即时通讯(IM)软件。它提供视频通话和文件共享等功能。

前提条件

要跟上本教程,你需要在你的机器上安装Python 3,而且,对Python有一点了解将有助于读者更好地跟上。

设置机器人配置文件

要设置一个新的机器人,我们需要在使用它之前先注册我们的机器人。这样,我们就能得到访问Telegram API的令牌。

点击Telegram的搜索图标,然后,在搜索栏中输入@botfather

BotFather是Telegram创建的官方机器人,以方便创建机器人。

在Telegram中创建Bot father

现在,点击开始按钮,开始对话。你应该得到以下界面。

开始与Bot father的对话

 

输入/start 来开始。

接下来,我们通过运行/newbot 命令来创建这个机器人。

创建新的机器人

 

接下来,我们为机器人输入我们喜欢的名字和用户名。

选择机器人名称

 

现在,我们复制我们的访问令牌并将其保存在某个地方。记住要妥善保护访问令牌,因为它是你的机器人密码。

编码机器人

我们首先创建一个新的目录,并导航到它。

接下来,我们创建一个虚拟环境。

一个虚拟环境允许你在你的电脑上创建不同的空间,有不同的库和版本。

通过创建一个虚拟环境,你将能够为一个项目分开安装必要的库,而不需要全局安装它们。

现在,通过运行下面的命令创建一个虚拟环境env

python -m venv env
复制代码

创建后,用下面的命令激活虚拟环境。

source env/bin/activate
复制代码

接下来,我们需要创建一个Telegram组,并将我们的Bot添加为成员。

为机器人添加成员

 

接下来,我们需要获得聊天ID,我们可以通过在Telegram组中发送此命令来实现。

/my_id BOT_NAME
复制代码

之后,我们需要在浏览器中打开下面的URL,以获得我们的聊天ID。

https://api.telegram.org/botBOT_TOKEN/getUpdates

BOT_TOKEN = the token we copied earlier
复制代码

这将返回一个JSON响应,类似于一个包含我们聊天ID的python字典。

包含聊天ID的JSON

 

现在,我们创建一个名为bot.py 的新的python文件,并在其中添加以下几行代码。

import requests
import time

# list of quotes
quotes = [
    'First, solve the problem. Then, write the code. – John Johnson',
    'Experience is the name everyone gives to their mistakes. – Oscar Wilde',
    'Code is like humor. When you have to explain it, it’s bad. – Cory House',
    'Before software can be reusable it first has to be usable. – Ralph Johnson',
    'Optimism is an occupational hazard of programming: feedback is the treatment. - Kent Beck'
]

# loop through the quotes
for quote in quotes:
    url = 'https://api.telegram.org/bot1848805395:AAHaacRzz3vDJ8vrQqVZ4vMPTqY1OBOQ12Q/sendMessage?chat_id=CHAT_ID&text="{}"'.format(quote)
    requests.get(url)
    # sends new quotes every 20seconds
    time.sleep(20)
复制代码

在测试机器人之前,我们需要使用以下代码安装请求模块。

pip install requests
复制代码

现在,让我们通过在终端运行我们的Python文件来测试我们的机器人。

python bot.py
复制代码

每20秒打印一个报价

好哇,它成功了!

让我们通过连接一个为我们提供随机编程报价的API,使我们的机器人更加有趣。

我们将使用这个API,以及/random 端点来获取随机报价。

接下来,我们需要在文件的顶部添加以下几行代码

from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
import json
复制代码

现在,让我们创建一个发送随机报价的函数,添加以下几行代码。

telegram_bot_token = "TOKEN"

updater = Updater(token=telegram_bot_token, use_context=True)
dispatcher = updater.dispatcher

def random(update, context):
    # fetch data from the api
    response = requests.get('http://quotes.stormconsultancy.co.uk/random.json')
    data = response.json()
    # send message
    context.bot.send_message(chat_id=update.effective_chat.id, text=data['quote']) 

# linking the /random command with the function random() 
quotes_handler = CommandHandler('random', random)
dispatcher.add_handler(quotes_handler)
复制代码

现在,让我们运行该文件,在我们的Telegram组中输入/random 。我们的机器人应该用一个随机的报价来回应。

使用API获取随机报价的机器人

 

结语

最后,我们已经了解了如何为群组建立Telegram机器人。

你仍然可以用Telegram机器人实现很多东西,比如将你的机器人连接到其他API,并将它们托管在[Heroku]这样的平台上,使你的机器人24/7可用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/92428.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

会自动化就能拿20K?不,你这顶多算会点皮毛···

前段时间公司要招2个自动化测试,同事面了几十个候选人,发现了一个很奇怪的现象,面试的时候,如果问的是框架api、脚本编写这些问题,基本上个个都能对答如流,等问到实际项目的时候,类似“怎么从0开…

如何实现一个基于WebRTC的音视频通信系统

文章有点长,推荐先收藏前言 目前市场上音视频技术方案大致分为以下几类,WebRTC因其超低延时、集成音视频采集传输等优点,是在线教育、远程会议等领域首选技术。 前言 目前市场上音视频技术方案大致分为以下几类,WebRTC因其超低延…

10年网安经验分享:一般人别瞎入网络安全行业

小白入门网络安全,如何选择方向? 如果你是一个新手小白,那么在最开始方向选择上面这一步是至关重要的,一旦你选错了那很可能就要和安全“saygoodbye”了。 很多小白刚开始的时候还没开始学会走就想着飞了,计算机功底…

四六级口语|考研复试口语|满满干货

目录 1.Which do you prefer to use, credit cards or cash?/Do you prefer the credit card or cash? 2.When you shop, do you prefer to go by yourself or with someone?

指针进阶(3)--玩转指针

指针进阶 内容不多,但面面俱到,都是精华 1.回调函数: 2.详解qsort函数参数: 回调函数就是,把一个函数的地址,放在函数指针中,然后将该指针作为一个参数,传到 另一个函数中&#x…

04.南瓜树低代码平台平台 分析后的感想

随着企业产品的不断完善,后续将有时间来推进产品转向低代码平台化。 低代码平台不是无代码平台,采用配置的方式完成UI/流程/报表的处理,有业务人员在完成基本的产品框架后,由研发人员完成业务规则代码固化,最终达到产…

MobSDK 封装MobSDK基础包

平台兼容性 Android Android CPU类型 iOS 适用版本区间:4.4 - 12.0 armeabi-v7a:支持,arm64-v8a:支持,x86:支持 原生插件通用使用流程: 购买插件,选择该插件绑定的项目。在HB…

3. 实例化Bean的三种方式

实例化Bean的三种方式 一、构造方法方式 1.1 BookDaoImpl package com.lin.dao.daoimpl;import com.lin.dao.BookDao;public class BookDaoImpl implements BookDao {public BookDaoImpl() {System.out.println("BookDao的无参构造器");}/*** 数据层实现*/public …

了解Linux 操作系统!开篇!!!

【推荐阅读】 Linux内核CPU调度域内容讲解 关于如何快速学好,学懂Linux内核。内含学习路线 一文了解Linux上TCP的几个内核参数调优 Linux 接口 Linux 系统是一种金字塔模型的系统,如下所示 应用程序发起系统调用把参数放在寄存器中(有时候放在栈中)…

Python解题 - CSDN周赛第15期 - 客栈的咖啡

本期遇上官方大放水,四道题里有三道都在每日一练里做过,再加上比赛时间不太友好,参与人数不多,问哥竟然混了个第一名,真是惭愧。。。就当是官方在奖励那些平时多多参加每日一练的童鞋们了。 第一题:求并集 …

Vue3响应式原理设计和实现

Vue3响应式原理设计和实现响应式什么是响应式手动响应式proxy代理对象响应式系统一个属性注册一个副作用函数一个属性注册多个副作用函数多个属性注册不同的副作用函数多个数据不同属性注册不同的副作用函数响应式 什么是响应式 响应式是一个过程,这个过程存在两个…

【MaixPy】:K210识别简例(简单二维码检测和双二维码检测)

实物图 俩二维码识别实物图 前言 这段时间接触了一下基于MaixPy的开发K210的摄像头设备,的确很有趣,运行速度很快,编程难度不大。很适合咱们视觉开发的同学们学习,以下是我玩设备的一些感悟,如有不妥之处,希望大家雅正,也希望能帮助初学者了解和学习,也可加bulidupup(…

java毕业设计——基于java+Socket+sqlserver的网络通讯系统设计与实现(毕业论文+程序源码)——网络通讯系统

基于javaSocketsqlserver的网络通讯系统设计与实现(毕业论文程序源码) 大家好,今天给大家介绍基于javaSocketsqlserver的网络通讯系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。 文章目录: 基于jav…

LwIP源码分析(3):内存堆和内存池代码详解

文章目录1 内存堆1.1 mem_init1.2 mem_malloc1.3 mem_free2 内存池2.1 memp_init2.2 memp_malloc2.3 memp_free3 内存管理宏定义在嵌入式系统中,内存池有助于快速有效地分配内存。LwIP提供了两个灵活的方式来管理和组织内存池的大小:内存堆和内存池。当然…

电脑维修记录

记于2022年12月15日 今天把电脑修好了,总结这次经验: (1)无知者无畏,对任何事情都要抱有探索的精神,最遗憾的事情不是做错了,而是想做没去做 (2)将每次走错路的经历都…

Orcale数据表去重创建联合主键

分享一下最近遇到的一个问题,我们从一个数据表中将数据表中的数据同步到另一个数据库的表中,由于要同步的数据表中没有建主键,所以数据同步后发现同步的数据比原始数据表中的数据要多,有不少重复的数据。因此需要对数据表进行去重…

事业编招聘:市委社会工委北京市民政局事业单位公开招聘

市委社会工委市民政局所属事业单位 根据《北京市事业单位公开招聘工作人员实施办法》(京人社专技发﹝2010﹞102号)等文件精神,北京市委社会工委北京市民政局所属21家事业单位面向社会及应届毕业生公开招聘事业单位工作人员88名。现将具体情况…

【SpringBoot 2.x】定时任务 之- @Scheduled注解

一、概述 Scheduled注解是Spring Boot提供的用于定时任务控制的注解,主要用于控制任务在某个指定时间执行,或者每隔一段时间执行。注意需要 启动类加EnableScheduling实现类加Component方法上加ScheduledScheduled主要有以下几种配置执行时间的方式&…

Neural Discrete Representation Learning (VQ-VAE) 简介

目录VQ-VAE参考VQ-VAE VAE是一种生成模型。 Vector QuantisedVariational AutoEncoder (VQ-VAE)是VAE的变种,其隐含变量是离散的。离散的隐含变量对于自然语言,推理都比较有帮助。著名的DALL-E就使用了类似VQ-VAE的离散隐含变量来从文本生成图像&#x…

【Python】同一网络下,手机和电脑进行socket通信

同一网络下,手机和电脑进行socket通信 最近在学python网络编程,发现socket可以进行跨主机的进程通信,于是尝试用电脑作为服务端,手机作为客户端,来进行socket通信。 电脑端准备 1.电脑开启热点(非必须&a…