如何使用C#制作键盘按钮消息文本与电报bot API中的标题不同
我需要我的机器人打印与其字幕不同的消息(键盘按钮元素上的电报客户端显示). 我的自定义按钮具有此文本:"Where am I?",当我单击它时,它在屏幕上也打印出"Where am I?". 我希望按钮打印"/location".(与其text字段不同) 我该如何实现?我正在使用C#和Telegram Bot API 编辑: 我想要的: 当用户单击此按钮时,Telegram客户端以/age [作为他的键入消息]发送消息,但是不是 send show my age(这是该按钮text字段) so:我想要一个带有text的按钮.当用户单击按钮时,我希望发送消息与text. 不同 解决方案 有一个布尔字段用于位置,您是否将其设置为true? https://core.telegram.org.org/bots/bots/api#keyboardboardbobaildbobaildboardBbutton 更新: HEN您正在向用户发送答复,您还
0 2024-04-20
编程技术问答社区
为什么我在电信机器人中遇到了错误的文件标识符/HTTP URL指定错误?
我是电报机器人的新手,并尝试使用此代码将照片发送给用户: await Bot.SendPhotoAsync(update.Message.Chat.Id, "http://182.126.201.42/" + "iisstart" + ".png"); 但是,当我尝试运行该代码时,获取此错误: Bad Request: Wrong file identifier/HTTP URL specified 我该如何解决这个问题?谢谢. 解决方案 这个问题可以源于以下问题: 电报不允许图像文件扩展名. 文件大小大于电报允许的大小. 您可以从前一个开始. 其他解决方案 await Bot.SendChatActionAsync(message.Chat.Id, ChatAction.UploadPhoto); const string file = @""; var fileName = file.Split('\\').Las
4 2024-04-16
编程技术问答社区
保存发送到机器人的用户消息,并将完成的表格发送给其他用户
几天来,我一直在尝试通过电报bot解决这个问题. 我试图在用户"/启动"机器人后向用户发送一些问题. 我想捕获所有用户答案,然后将其发送给我想在一条消息中查看用户答案的​​某些用户. 我试图通过发送内联按钮来做到这一点,但找不到等待用户下一条消息的方法.我试图将答案存储在字符串阵列中,并且也不起作用. ,在问题结束时,我想在一个带有所有用户问题的消息中向某些用户/频道发送所有用户答案. 我使用telegram.bot库. 这是我的代码 static string gotName = "0"; static string gotAge = "0"; static string gotMessage = "0"; static string[] Forminfo = { gotName, gotAge, gotMessage }; async private void Bot_OnUpdate(object sender, Telegram
0 2024-04-16
编程技术问答社区
如何在C#中处理Telegram僵尸的多个用户?
我写了一个机器人,询问您的名字并将其写在照片上,并将其发送给您,并且可以工作.但是问题是bot上有多个用户 它无法正常工作,我想知道如何将用户的条目和输出分开. 这是我的代码: void bot_OnMessage(object sender, Telegram.Bot.Args.MessageEventArgs e) { KeyboardButton[] btns = new KeyboardButton[1]; btns[0] = new KeyboardButton("ساخت عکس"); if(e.Message.Text=="ساخت عکس") { bot.SendTextMessageAsync(e.Message.From.Id, "نام خود را وارد کنید", Telegram.Bot.Types.Enums.ParseMode.Default, fal
0 2024-04-15
编程技术问答社区
我可以通过Telegram Bot API按用户ID获取电话号码吗?
我正在使用Telegram Bot API将即时消息发送给用户. 我已经安装了 nuget package .此软件包是通过电信开发人员推荐. 我创建了一个电报机器人,并通过使用代码成功地访问了它.当我将杂物发送到bot时,bot获取有关发件人的一些信息. 我需要用户的电话号码来在我们的系统中识别它们并将信息发送回它们. 我的问题是我可以通过telegramUserId获得用户电话号码吗? 我为用户便利而这样做.如果我可以获取用户电话号码,我不必从用户那里要求它. 现在我这样的命令: debt 9811201243 我想要 debt 解决方案 可以使用bots 2.0查看bot api文档. /2-0-Intro#位置和数字 其他解决方案 否,不幸的是Telegram Bot API不返回电话号码.您应该使用 telegram api方法而不是向用户明确询问.您也无法获得用户的"朋友". 您一定会检索以下信息:
0 2024-04-13
编程技术问答社区
在Telegram机器人中使用HTML
这不是重复的问题. 我想在我的电报机器人中使用C#编写的HTML代码.我搜索了,但没有找到任何答案.怎么做? 我使用了Telegrambotsharp. 这是与我解释的部分有关的代码: MessageTarget target = (MessageTarget)update.Chat ?? update.From; if(Text.StartsWith("Hello")) { bot.SendMessage(target, "Hello dear", true); } 解决方案 Use the following syntax in your message: *bold text* _italic text_ [inline URL](http://www.example.com/) [inline mention of a user](tg://user?id=123456789)
0 2024-04-12
编程技术问答社区
如何在c#中解决我的机器人的干扰?
我做了一个电报机器人.实际上,该机器人是一个游戏,玩某些单词.但是问题是我将机器人添加到两个不同的组(作为管理员)或两个用户 - 网络时,分别使用bot并启动bot,将影响他们一起玩的东西.一个人在下一个人游戏中引起了骚扰.例如:如果John在Mobile和Desired_word启动我的bot,则John是Newyork,而Length = 7,Sara在Mobile中启动我的机器人.例如,约翰的len_desiredwords变为5. library = nettelegrambotapi 4.0.0 VS = 2013 V4; 不知道该怎么办. 代码: using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using NetTelegramBotAp
2 2024-04-11
编程技术问答社区
如何从telegram bot的键盘输入中获得响应?
我想使用自定义键盘获取所选选项. 如何获得所选选项?有例子吗? 我的问题由" node-telegram-bot-api"回答 在这里:是否有C#? 的解决方案 解决方案 要创建一个自定义键盘,您必须发送文本消息并传递IReplyMarkup.选定的选项作为消息发送,可以在OnMessage事件中处理.将自定义键盘设置为回复标记时,可以隐藏自定义键盘. 这是一个示例: private const string FirstOptionText = "First option"; private const string SecondOptionText = "Second option"; private async void BotClientOnMessage(object sender, MessageEventArgs e) { switch (e.Message.Text) { case FirstOption
2 2024-04-03
编程技术问答社区
我怎样才能以编程方式向@BotFather发送消息?
我知道,如果将命令/newbot发送到bot @BotFather,可以在电报中创建一个机器人.但是,为此,您需要采用设备,打开电报,与@BotFather打开聊天,然后将命令/newbot发送给他.可以通过编程完成以上所有操作吗? P.S.:这不是懒惰,而是尝试优化解决方案的尝试. 解决方案 是的,可以与 pyrogram , telethon , madelineproto 等 这是使用Telethon的POC脚本(python3 -m pip install -U telethon首先安装依赖项): from telethon import TelegramClient, events api_id = ... api_hash = "..." client = TelegramClient('session', api_id, api_hash) BOT_NAME="..." BOT_USER_NAME="..." # must end with -bo
2 2024-04-03
编程技术问答社区
如何使用Telebot输入()?
我想知道我是否可以使用Telebot依赖性制作input() 例如.控制台方式: POL = float(input("Enter your POL: )) 是否有一种使用Telebot的方法,例如: bot.send_message(message.chat.id, "Enter your POL") ## Get message.text into POL variable. 解决方案 据我了解,没有一种直接的方法,但是您可以查看用户从 中回复的消息 replied_message = message.reply_to_message.message_id 如果它匹配您发送的消息的ID,则将是对您的消息的答复.您可以从 获得已发送消息的ID sent_message = bot.send_message(message.chat.id, "Enter your POL") sent_message_id = sent_message.mess
0 2024-04-03
编程技术问答社区
Telegram Bot Java Library 下载的图像质量
我正在使用 telegrambots rubenlagus by rubenllagus开发我的电报机器人.我能够成功地将照片发送到机器人,并从此示例.问题是,与实际图像相比,下载的图像较小,质量也很差.使用Java持久性(JPA)将图像存储为斑点.这是我的代码 从客户端接收图像的示例代码; List photos = message.getPhoto(); System.out.println("Photos --> " + photos.size()); for (int i = 0; i
0 2024-04-03
编程技术问答社区
Telegram Bot下载图像文件
我正在尝试使用机器人下载文件(图像),但是当我下载映像(成功完成)后,使用getfile后,我收到的图像非常小1.7 kb,而它比我的移动设备大于我的移动设备.电话 解决方案 这是一个旧文章.但是,由于没有关于如何在电信机器人中下载文件的好文档,因此对于任何想知道的人,这就是您应该做的(一种方法): DownloadFile(message.Photo[message.Photo.Length - 1].FileId, @"c:\photo.jpg"); 其中: private static async void DownloadFile(string fileId, string path) { try { var file = await Bot.GetFileAsync(fileId); using (var saveImageStream = new File
2 2024-04-03
编程技术问答社区
如何在pyTelegramBotAPI中限制少数用户的访问?
我正在使用telebot(创建一个机器人将照片发送给其用户.关键是我没有看到一种限制该机器人访问的方法,因为我打算通过此机器人共享私人图像. 我在这个论坛上阅读了通过Python-Telegram-bot,有一种方法可以限制发件人消息的访问(如何限制对电报机器人的访问),但是我不知道是否可以通过Pytelegrambotapi. 您知道我该如何解决吗? 解决方案 聚会有点迟到 - 也许对于未来的帖子读者.您可以包装函数以禁止访问. 下面的一个示例: from functools import wraps def is_known_username(username): ''' Returns a boolean if the username is known in the user-list. ''' known_usernames = ['username1', 'username2'] return us
0 2024-04-03
编程技术问答社区
使用Telegram Bot API从组或频道接收消息
我正在研究与电报集成的应用程序,并且我有一个问题,可以找到一种方法,以使用 Telegram bot api api 到目前为止,我的代码将消息发送给组或频道已在其上进行频道.有什么建议吗? static async Task DoSomethingAsync() { var Bot = new Telegram.Bot.Api("api_token"); return await Bot.SendTextMessage("chatid","Hello"); } 解决方案 默认情况下,您的bot只能以/command@YourBotName格式查看消息,或回复其消息. 要接收所有消息,请goto @botfather ,然后关闭隐私模式,然后将您的bot重新输入到group. /setprivacy - 设置添加到组时,您的机器人将接收到哪些消息.禁用隐私模式,该机器人将接收所有消息.
12 2024-04-03
编程技术问答社区
Telegram的机器人对所有用户都不起作用
我创建了多个电报机器人.它们适用于我的帐户,以及我测试过的其他几个帐户. ,但我收到了几个用户的报告,说这些机器人永远不会响应. 它有一些用户设置可以阻止帐户从机器人中获取消息?或其他任何想法为什么它不适用于某些帐户? 解决方案 好吧,找到了这个问题,是pebcak. 此问题是因为我们的代码从JSON数据访问了last_name. 因此,请确保您的代码不依赖一个或姓氏. 其他解决方案 ,但我收到了几个用户的报告,说这些机器人永远不会响应. 这是非常无法使用的信息.默认情况下,所有用户在机器人使用情况下均相等,如果您不编程实现任何用户,则没有任何用户.但是,如果他们这样说,请尝试将 post 查询发送给 post 的示例: https://api.telegram.org/bot{your_bot_token}/sendMessage?chat_id={user_chat_id}&text=test 请注意,这些用户需要的CHAT_I
0 2024-04-03
编程技术问答社区
有多少人使用我的电报机器人?
我创建了一个bot @weatherplusbot 我怎么知道有多少人使用它? 有没有办法或"地点",您可以计算多少人"已安装"或当前使用我的机器人? 谢谢. 解决方案 不幸的是,电报没有提供此类信息.您应该使用bot记录任何用户的ID. 一个简单的解决方案可能是使用用户ID主键,注册时间戳和最后使用时间戳创建数据库. 我使用这种方式,因此您拥有更多丰富的统计信息,了解了总用户,在最后一天,一周,最近有多少用户注册的用户等等 其他解决方案 您目前无法从API获取此数据,您可以将事件记录到您自己的数据库中,并计数唯一的用户发送此命令.
0 2024-04-03
编程技术问答社区
电报机器人预填文本供用户编辑
Telegram Bot向我发送了带有文本片段的消息,我想编辑,并将其发送回机器人进行进一步处理. 复制和粘贴需要时间.键入消息会花费时间. 理想情况下,我想在机器人的消息上按"内联"按钮"编辑",并在我的回复框中获取消息文本进行编辑./p> 我尝试使用除/start*以外的参数的深层链接,但这似乎不起作用. 我可以使用bot api(或任何其他电报API)在我的输入框中准备好文本? 解决方案 在官方应用中是不可能的.您的问题是关于使用草稿的问题 - API中没有任何方法来创建或清除它们. 尽管如此,您仍可以在 gihub上存储任何官方应用程序会更喜欢一种艰难的方法,但是与该副本/过去的解决方案相比,似乎要容易得多,不是吗? upd 我可以为您提供一个新的想法,如何解决您的问题 - 希望它会有所帮助. 这是关于 switch_inline_query_current_chat InlineKeyboardButton .只需将内联按钮附
2 2024-04-03
编程技术问答社区
'stream.ReadTimeout'抛出了一个类型为'System.InvalidOperationException'的异常,将照片发送到telegram bot。
我写了以下代码以将照片发送到我的机器人,但是在我的流中,我有两个例外读写,并且我的照片没有发送. 我认为也许原因是这个错误,但我无法修复它: stream.ReadTimeout扔了一个例外的'system.invalidoperationException' using (var stream = System.IO.File.Open("a.jpg", FileMode.Open)) { var fileToSend = new FileToSend("a.jpg", stream); Task.Run(() => bot.SendPhotoAsync(u.Message.Chat.Id, fileToSend).ConfigureAwait(false)); } 解决方案 此例外的原因可能是您Dispose stream启动任务后立即进行. using语句在stream实例上呼叫Dispose当执行离开此块时.您可以删除此using语句
8 2024-04-03
编程技术问答社区
Telegram bot怪异的错误:错误的请求:指定了错误的文件标识符/HTTP URL
我使用bot将消息发送到电报频道. 使用Webhook方法. 我正在通过链接发送file_id.我从频道帖子中获得了file_id. 对于某些文件,例如GIF和视频格式(MP4), 当我使用此代码时: $url = 'https://api.telegram.org/bot'.token.'/sendVideo?chat_id='.uid."&video=".$file."&caption=" .urlencode($caption); file_get_contents($url); 我遇到这样的错误: {"ok":false,"error_code":400,"description":"Bad Request: wrong file identifier/HTTP URL specified"} 我真的不知道为什么我得到这个, 就像这是错误的错误,因为代码依赖于我猜. 我使用我从频道帖子中获得的file_id. 该错误的原因
2 2024-04-03
编程技术问答社区
在编写Telegram机器人时,如何避免使用全局变量?
我正在使用Python-Telegram-Bot库在Python上编写电报机器人.该机器人的功能是在给定位置查找POI.我有一个与8个状态的对话人,我需要在这些功能之间(例如地址和坐标)以及搜索半径之间传递一些数据.但是,如果我使用全局变量,当多个人同时使用时,机器人无法正常工作.引入全局变量的替代方法是什么? 我大约有以下代码: # ... def start(update, context): context.bot.send_photo(update.message.chat_id, "...", caption="Hello") return 1 def location(update, context): global lat, lon, address address = update.message.text # here i get a variable that i have
4 2024-04-03
编程技术问答社区