diff --git a/chatgpt-telegram-bot/en/v.0.1.0/404.html b/chatgpt-telegram-bot/en/v.0.1.0/404.html new file mode 100644 index 0000000..ae335d6 --- /dev/null +++ b/chatgpt-telegram-bot/en/v.0.1.0/404.html @@ -0,0 +1,364 @@ + + + + + + + + + + + + + + + + + + + + + + ChatGPT Telegram Bot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + + + + + +
+ + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + +
+
+
+ + + + + +
+
+
+ + + +
+ +
+ +

404 - Not found

+ +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/chatgpt-telegram-bot/en/v.0.1.0/assets/favicon.ico b/chatgpt-telegram-bot/en/v.0.1.0/assets/favicon.ico new file mode 100644 index 0000000..b542a84 Binary files /dev/null and b/chatgpt-telegram-bot/en/v.0.1.0/assets/favicon.ico differ diff --git a/chatgpt-telegram-bot/en/v.0.1.0/assets/images/favicon.png b/chatgpt-telegram-bot/en/v.0.1.0/assets/images/favicon.png new file mode 100644 index 0000000..1cf13b9 Binary files /dev/null and b/chatgpt-telegram-bot/en/v.0.1.0/assets/images/favicon.png differ diff --git a/chatgpt-telegram-bot/en/v.0.1.0/assets/images/social/index.png b/chatgpt-telegram-bot/en/v.0.1.0/assets/images/social/index.png new file mode 100644 index 0000000..4456716 Binary files /dev/null and b/chatgpt-telegram-bot/en/v.0.1.0/assets/images/social/index.png differ diff --git a/chatgpt-telegram-bot/en/v.0.1.0/assets/javascripts/bundle.7de9f34d.min.js b/chatgpt-telegram-bot/en/v.0.1.0/assets/javascripts/bundle.7de9f34d.min.js new file mode 100644 index 0000000..58c11df --- /dev/null +++ b/chatgpt-telegram-bot/en/v.0.1.0/assets/javascripts/bundle.7de9f34d.min.js @@ -0,0 +1,3 @@ +"use strict";(()=>{var Wi=Object.create;var Ar=Object.defineProperty;var Di=Object.getOwnPropertyDescriptor;var Ni=Object.getOwnPropertyNames,Vt=Object.getOwnPropertySymbols,zi=Object.getPrototypeOf,Cr=Object.prototype.hasOwnProperty,mn=Object.prototype.propertyIsEnumerable;var un=(e,t,r)=>t in e?Ar(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,j=(e,t)=>{for(var r in t||(t={}))Cr.call(t,r)&&un(e,r,t[r]);if(Vt)for(var r of Vt(t))mn.call(t,r)&&un(e,r,t[r]);return e};var dn=(e,t)=>{var r={};for(var n in e)Cr.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&Vt)for(var n of Vt(e))t.indexOf(n)<0&&mn.call(e,n)&&(r[n]=e[n]);return r};var qt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Vi=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Ni(t))!Cr.call(e,o)&&o!==r&&Ar(e,o,{get:()=>t[o],enumerable:!(n=Di(t,o))||n.enumerable});return e};var Lt=(e,t,r)=>(r=e!=null?Wi(zi(e)):{},Vi(t||!e||!e.__esModule?Ar(r,"default",{value:e,enumerable:!0}):r,e));var bn=qt((kr,hn)=>{(function(e,t){typeof kr=="object"&&typeof hn!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(kr,function(){"use strict";function e(r){var n=!0,o=!1,i=null,a={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function s(M){return!!(M&&M!==document&&M.nodeName!=="HTML"&&M.nodeName!=="BODY"&&"classList"in M&&"contains"in M.classList)}function p(M){var Ne=M.type,H=M.tagName;return!!(H==="INPUT"&&a[Ne]&&!M.readOnly||H==="TEXTAREA"&&!M.readOnly||M.isContentEditable)}function c(M){M.classList.contains("focus-visible")||(M.classList.add("focus-visible"),M.setAttribute("data-focus-visible-added",""))}function l(M){M.hasAttribute("data-focus-visible-added")&&(M.classList.remove("focus-visible"),M.removeAttribute("data-focus-visible-added"))}function f(M){M.metaKey||M.altKey||M.ctrlKey||(s(r.activeElement)&&c(r.activeElement),n=!0)}function m(M){n=!1}function d(M){s(M.target)&&(n||p(M.target))&&c(M.target)}function h(M){s(M.target)&&(M.target.classList.contains("focus-visible")||M.target.hasAttribute("data-focus-visible-added"))&&(o=!0,window.clearTimeout(i),i=window.setTimeout(function(){o=!1},100),l(M.target))}function v(M){document.visibilityState==="hidden"&&(o&&(n=!0),Q())}function Q(){document.addEventListener("mousemove",K),document.addEventListener("mousedown",K),document.addEventListener("mouseup",K),document.addEventListener("pointermove",K),document.addEventListener("pointerdown",K),document.addEventListener("pointerup",K),document.addEventListener("touchmove",K),document.addEventListener("touchstart",K),document.addEventListener("touchend",K)}function ae(){document.removeEventListener("mousemove",K),document.removeEventListener("mousedown",K),document.removeEventListener("mouseup",K),document.removeEventListener("pointermove",K),document.removeEventListener("pointerdown",K),document.removeEventListener("pointerup",K),document.removeEventListener("touchmove",K),document.removeEventListener("touchstart",K),document.removeEventListener("touchend",K)}function K(M){M.target.nodeName&&M.target.nodeName.toLowerCase()==="html"||(n=!1,ae())}document.addEventListener("keydown",f,!0),document.addEventListener("mousedown",m,!0),document.addEventListener("pointerdown",m,!0),document.addEventListener("touchstart",m,!0),document.addEventListener("visibilitychange",v,!0),Q(),r.addEventListener("focus",d,!0),r.addEventListener("blur",h,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var vn=qt(Hr=>{(function(e){var t=function(){try{return!!Symbol.iterator}catch(c){return!1}},r=t(),n=function(c){var l={next:function(){var f=c.shift();return{done:f===void 0,value:f}}};return r&&(l[Symbol.iterator]=function(){return l}),l},o=function(c){return encodeURIComponent(c).replace(/%20/g,"+")},i=function(c){return decodeURIComponent(String(c).replace(/\+/g," "))},a=function(){var c=function(f){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var m=typeof f;if(m!=="undefined")if(m==="string")f!==""&&this._fromString(f);else if(f instanceof c){var d=this;f.forEach(function(ae,K){d.append(K,ae)})}else if(f!==null&&m==="object")if(Object.prototype.toString.call(f)==="[object Array]")for(var h=0;hd[0]?1:0}),c._entries&&(c._entries={});for(var f=0;f1?i(d[1]):"")}})})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Hr);(function(e){var t=function(){try{var o=new e.URL("b","http://a");return o.pathname="c d",o.href==="http://a/c%20d"&&o.searchParams}catch(i){return!1}},r=function(){var o=e.URL,i=function(p,c){typeof p!="string"&&(p=String(p)),c&&typeof c!="string"&&(c=String(c));var l=document,f;if(c&&(e.location===void 0||c!==e.location.href)){c=c.toLowerCase(),l=document.implementation.createHTMLDocument(""),f=l.createElement("base"),f.href=c,l.head.appendChild(f);try{if(f.href.indexOf(c)!==0)throw new Error(f.href)}catch(M){throw new Error("URL unable to set base "+c+" due to "+M)}}var m=l.createElement("a");m.href=p,f&&(l.body.appendChild(m),m.href=m.href);var d=l.createElement("input");if(d.type="url",d.value=p,m.protocol===":"||!/:/.test(m.href)||!d.checkValidity()&&!c)throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:m});var h=new e.URLSearchParams(this.search),v=!0,Q=!0,ae=this;["append","delete","set"].forEach(function(M){var Ne=h[M];h[M]=function(){Ne.apply(h,arguments),v&&(Q=!1,ae.search=h.toString(),Q=!0)}}),Object.defineProperty(this,"searchParams",{value:h,enumerable:!0});var K=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==K&&(K=this.search,Q&&(v=!1,this.searchParams._fromString(this.search),v=!0))}})},a=i.prototype,s=function(p){Object.defineProperty(a,p,{get:function(){return this._anchorElement[p]},set:function(c){this._anchorElement[p]=c},enumerable:!0})};["hash","host","hostname","port","protocol"].forEach(function(p){s(p)}),Object.defineProperty(a,"search",{get:function(){return this._anchorElement.search},set:function(p){this._anchorElement.search=p,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(a,{toString:{get:function(){var p=this;return function(){return p.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(p){this._anchorElement.href=p,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(p){this._anchorElement.pathname=p},enumerable:!0},origin:{get:function(){var p={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],c=this._anchorElement.port!=p&&this._anchorElement.port!=="";return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(c?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(p){},enumerable:!0},username:{get:function(){return""},set:function(p){},enumerable:!0}}),i.createObjectURL=function(p){return o.createObjectURL.apply(o,arguments)},i.revokeObjectURL=function(p){return o.revokeObjectURL.apply(o,arguments)},e.URL=i};if(t()||r(),e.location!==void 0&&!("origin"in e.location)){var n=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:n,enumerable:!0})}catch(o){setInterval(function(){e.location.origin=n()},100)}}})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Hr)});var on=qt((Ut,nn)=>{(function(t,r){typeof Ut=="object"&&typeof nn=="object"?nn.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Ut=="object"?Ut.ClipboardJS=r():t.ClipboardJS=r()})(Ut,function(){return function(){var e={686:function(n,o,i){"use strict";i.d(o,{default:function(){return Ui}});var a=i(279),s=i.n(a),p=i(370),c=i.n(p),l=i(817),f=i.n(l);function m(D){try{return document.execCommand(D)}catch(A){return!1}}var d=function(A){var L=f()(A);return m("cut"),L},h=d;function v(D){var A=document.documentElement.getAttribute("dir")==="rtl",L=document.createElement("textarea");L.style.fontSize="12pt",L.style.border="0",L.style.padding="0",L.style.margin="0",L.style.position="absolute",L.style[A?"right":"left"]="-9999px";var I=window.pageYOffset||document.documentElement.scrollTop;return L.style.top="".concat(I,"px"),L.setAttribute("readonly",""),L.value=D,L}var Q=function(A,L){var I=v(A);L.container.appendChild(I);var U=f()(I);return m("copy"),I.remove(),U},ae=function(A){var L=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},I="";return typeof A=="string"?I=Q(A,L):A instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(A==null?void 0:A.type)?I=Q(A.value,L):(I=f()(A),m("copy")),I},K=ae;function M(D){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?M=function(L){return typeof L}:M=function(L){return L&&typeof Symbol=="function"&&L.constructor===Symbol&&L!==Symbol.prototype?"symbol":typeof L},M(D)}var Ne=function(){var A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},L=A.action,I=L===void 0?"copy":L,U=A.container,G=A.target,Pe=A.text;if(I!=="copy"&&I!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(G!==void 0)if(G&&M(G)==="object"&&G.nodeType===1){if(I==="copy"&&G.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(I==="cut"&&(G.hasAttribute("readonly")||G.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Pe)return K(Pe,{container:U});if(G)return I==="cut"?h(G):K(G,{container:U})},H=Ne;function B(D){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?B=function(L){return typeof L}:B=function(L){return L&&typeof Symbol=="function"&&L.constructor===Symbol&&L!==Symbol.prototype?"symbol":typeof L},B(D)}function se(D,A){if(!(D instanceof A))throw new TypeError("Cannot call a class as a function")}function me(D,A){for(var L=0;L0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof U.action=="function"?U.action:this.defaultAction,this.target=typeof U.target=="function"?U.target:this.defaultTarget,this.text=typeof U.text=="function"?U.text:this.defaultText,this.container=B(U.container)==="object"?U.container:document.body}},{key:"listenClick",value:function(U){var G=this;this.listener=c()(U,"click",function(Pe){return G.onClick(Pe)})}},{key:"onClick",value:function(U){var G=U.delegateTarget||U.currentTarget,Pe=this.action(G)||"copy",zt=H({action:Pe,container:this.container,target:this.target(G),text:this.text(G)});this.emit(zt?"success":"error",{action:Pe,text:zt,trigger:G,clearSelection:function(){G&&G.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(U){return Lr("action",U)}},{key:"defaultTarget",value:function(U){var G=Lr("target",U);if(G)return document.querySelector(G)}},{key:"defaultText",value:function(U){return Lr("text",U)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(U){var G=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return K(U,G)}},{key:"cut",value:function(U){return h(U)}},{key:"isSupported",value:function(){var U=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],G=typeof U=="string"?[U]:U,Pe=!!document.queryCommandSupported;return G.forEach(function(zt){Pe=Pe&&!!document.queryCommandSupported(zt)}),Pe}}]),L}(s()),Ui=Fi},828:function(n){var o=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function a(s,p){for(;s&&s.nodeType!==o;){if(typeof s.matches=="function"&&s.matches(p))return s;s=s.parentNode}}n.exports=a},438:function(n,o,i){var a=i(828);function s(l,f,m,d,h){var v=c.apply(this,arguments);return l.addEventListener(m,v,h),{destroy:function(){l.removeEventListener(m,v,h)}}}function p(l,f,m,d,h){return typeof l.addEventListener=="function"?s.apply(null,arguments):typeof m=="function"?s.bind(null,document).apply(null,arguments):(typeof l=="string"&&(l=document.querySelectorAll(l)),Array.prototype.map.call(l,function(v){return s(v,f,m,d,h)}))}function c(l,f,m,d){return function(h){h.delegateTarget=a(h.target,f),h.delegateTarget&&d.call(l,h)}}n.exports=p},879:function(n,o){o.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},o.nodeList=function(i){var a=Object.prototype.toString.call(i);return i!==void 0&&(a==="[object NodeList]"||a==="[object HTMLCollection]")&&"length"in i&&(i.length===0||o.node(i[0]))},o.string=function(i){return typeof i=="string"||i instanceof String},o.fn=function(i){var a=Object.prototype.toString.call(i);return a==="[object Function]"}},370:function(n,o,i){var a=i(879),s=i(438);function p(m,d,h){if(!m&&!d&&!h)throw new Error("Missing required arguments");if(!a.string(d))throw new TypeError("Second argument must be a String");if(!a.fn(h))throw new TypeError("Third argument must be a Function");if(a.node(m))return c(m,d,h);if(a.nodeList(m))return l(m,d,h);if(a.string(m))return f(m,d,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function c(m,d,h){return m.addEventListener(d,h),{destroy:function(){m.removeEventListener(d,h)}}}function l(m,d,h){return Array.prototype.forEach.call(m,function(v){v.addEventListener(d,h)}),{destroy:function(){Array.prototype.forEach.call(m,function(v){v.removeEventListener(d,h)})}}}function f(m,d,h){return s(document.body,m,d,h)}n.exports=p},817:function(n){function o(i){var a;if(i.nodeName==="SELECT")i.focus(),a=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var s=i.hasAttribute("readonly");s||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),s||i.removeAttribute("readonly"),a=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var p=window.getSelection(),c=document.createRange();c.selectNodeContents(i),p.removeAllRanges(),p.addRange(c),a=p.toString()}return a}n.exports=o},279:function(n){function o(){}o.prototype={on:function(i,a,s){var p=this.e||(this.e={});return(p[i]||(p[i]=[])).push({fn:a,ctx:s}),this},once:function(i,a,s){var p=this;function c(){p.off(i,c),a.apply(s,arguments)}return c._=a,this.on(i,c,s)},emit:function(i){var a=[].slice.call(arguments,1),s=((this.e||(this.e={}))[i]||[]).slice(),p=0,c=s.length;for(p;p{"use strict";var bs=/["'&<>]/;ai.exports=vs;function vs(e){var t=""+e,r=bs.exec(t);if(!r)return t;var n,o="",i=0,a=0;for(i=r.index;i{function e(n,o){parent.postMessage(n,o||"*")}function t(...n){return n.reduce((o,i)=>o.then(()=>new Promise(a=>{let s=document.createElement("script");s.src=i,s.onload=a,document.body.appendChild(s)})),Promise.resolve())}var r=class extends EventTarget{constructor(n){super(),this.url=n,this.m=i=>{i.source===this.w&&(this.dispatchEvent(new MessageEvent("message",{data:i.data})),this.onmessage&&this.onmessage(i))},this.e=(i,a,s,p,c)=>{if(a===`${this.url}`){let l=new ErrorEvent("error",{message:i,filename:a,lineno:s,colno:p,error:c});this.dispatchEvent(l),this.onerror&&this.onerror(l)}};let o=document.createElement("iframe");o.hidden=!0,document.body.appendChild(this.iframe=o),this.w.document.open(),this.w.document.write(` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + +
+ + + + +
+ +
+ + + + +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + + + + + +

Personal ChatGPT Telegram Bot⚓︎

+
+

Introducing the ultimate AI-powered chatbot for Telegram - the perfect companion for anyone looking for quick, accurate answers to their questions. Our bot uses state-of-the-art machine learning technology powered by the ChatGPT model, allowing it to understand natural language inputs and respond with human-like precision.

+

With our bot, you can ask anything you want, from simple queries to complex questions. Whether you're looking for information on the latest news, need help with a math problem, or just want to chat with a virtual friend, our bot has you covered.

+

What's more, our bot is designed to be easy to use and user-friendly. Simply type in your question or query, and the bot will do the rest, providing you with a quick and accurate response in seconds. No more scrolling through endless search results or struggling to find the information you need - our bot does all the hard work for you.

+

So why wait? Try out our ChatGPT-powered Telegram bot today and experience the future of AI-powered chatbots for yourself!

+

(с) Generated by ChatGPT

+
+

But seriously, the project uses your ChatGPT token to access the ChatGPT API and let you chat with ChatGPT directly in Telegram.

+
+

Disclaimer

+

This is a personal project and is not affiliated with OpenAI in any way.

+
+

Demo⚓︎

+

See for yourself how easy and convenient it is to use ChatGPT in Telegram. It is better to see once than to hear 100 times.

+ + +

Features⚓︎

+

Key Features:

+
    +
  • Saving the context of a conversation
  • +
  • 🆕 Access can be restricted by specifying a list of allowed users.
  • +
  • 🆕 Support for multiple chats for one user
  • +
  • Support markdown in answers
  • +
  • 🆕 Ability to set behavior for the conversation, which will be preserved even when the context is cleared
  • +
  • Docker and Proxy support
  • +
  • 🆕 Possibility to check expenses for the current month
  • +
  • 🆕 Tells you how many tokens you spent to generate a response
  • +
  • 🆕 Support Telegram Inline Mode
  • +
+

Commands⚓︎

+

List of available commands to control the bot.

+

Chat commands⚓︎

+

/chat chat_name - allows you to create a new chat or switch to an existing one.

+

/chat - allows you to return to normal chat. Also displays a list of created chats.

+

/close_chat - closes the chat room. You get to the default chat room.

+

/clear_context - clears the chat context. In fact, it deletes the chat and creates a new one. The behavior is maintained, as opposed to closing the chat room.

+

/prompt your_question - Allows you to ask a question outside the context of the main conversation.

+

/current_chat - returns the name of the current chat.

+

Behavior commands⚓︎

+

In fact, the first message at the beginning of the chat, which tells how the AI should react. It is saved when the context is cleared, but is not saved when the chat is closed.

+
+

These commands work within the current chat, and do not affect other chats.

+
+

/behavior behavior_description - sets the bot's behavior for the current chat.

+

/current_behavior - get the current behavior setting for the current chat.

+

/clear_behavior - removes the behavior settings for the current chat.

+

Other commands⚓︎

+

/balance - Allows you to see the amount of money spent this month. Works only when you specify bot admins.

+

Inline Mode⚓︎

+

Inline mode allows you to use the bot in group chat, private chat, or in comments. Here's how it works:

+ + +

But for this mode to work it needs to be set up:

+ + +
+

setinlinefeedback

+

Be sure to activate /setinlinefeedback, otherwise nothing will work.

+
+

Privacy⚓︎

+

See my last name in the domain? I'm a developer, blogger, and publicly active. I don't have the benefit of getting dirty under my own name. I assure you that your data is not transferred to third parties, even I do not know about your requests to ChatGPT. You can see for yourself by examining the code, it's opensource.

+

Let's get started⚓︎

+

Enough words, let's launch your personal ChatGPT Telegram bot. 🚀

+

Preparing⚓︎

+ +

Environment variables⚓︎

+
    +
  • TELEGRAM_BOT_TOKEN - The bot access token you got from GodFather. Example: 1234567890:XXX_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  • +
  • TELEGRAM_BOT_USERNAME - Specify a name with the ending bot here, not a public name. Example: Undusted_bot
  • +
  • TELEGRAM_PERSON_ID - The IDs of the users on Telegram who are allowed access. Example: 1234567, 56789045
  • +
  • ADMIN_TELEGRAM_PERSON_ID - The IDs of the users on Telegram who are allowed admin access. Example: 1234567
  • +
  • CHAT_GPT_TOKEN - OpenAI API access token.
  • +
+

Docker Run⚓︎

+
+

Support

+

The following platforms are supported: linux/amd64, linux/arm64/v8

+
+
docker run -it --name chatgpt-telegram-bot \
+    --env TELEGRAM_BOT_TOKEN= \
+    --env TELEGRAM_BOT_USERNAME= \
+    --env TELEGRAM_PERSON_ID= \
+    --env ADMIN_TELEGRAM_PERSON_ID= \
+    --env CHAT_GPT_TOKEN= \
+    upagge/chatgpt-telegram-bot:develop
+
+

Telegram Proxy⚓︎

+

If you have Telegram blocked, you can specify proxy settings to connect.

+
+

Note

+

Requests to OpenAI will not be made through a proxy

+
+
docker run -it --name chatgpt-telegram-bot \
+    --env TELEGRAM_BOT_TOKEN= \
+    --env TELEGRAM_BOT_USERNAME= \
+    --env TELEGRAM_PERSON_ID= \
+    --env ADMIN_TELEGRAM_PERSON_ID= \
+    --env CHAT_GPT_TOKEN= \
+    --env TELEGRAM_PROXY_ENABLE=true \
+    --env TELEGRAM_PROXY_HOST= \
+    --env TELEGRAM_PROXY_PORT= \
+    --env TELEGRAM_PROXY_TYPE=SOCKS5 \
+    --env TELEGRAM_PROXY_USERNAME= \
+    --env TELEGRAM_PROXY_PASSWORD= \
+    upagge/chatgpt-telegram-bot:latest
+
+
+
    +
  • Available options SOCKS5, SOCKS4, HTTP.
  • +
  • Optional. If there is no authorization, you can leave it blank.
  • +
+
+

DockerCompose⚓︎

+
+

Don't forget to create a file with the variable .env.

+
+
+
+
+
version: '3.8'
+services:
+
+  chat-gpt:
+    image: upagge/chatgpt-telegram-bot:latest
+    container_name: chatgpt-bot
+    restart: always
+    environment:
+      TELEGRAM_BOT_TOKEN: ${TELEGRAM_BOT_TOKEN}
+      TELEGRAM_BOT_USERNAME: ${TELEGRAM_BOT_USERNAME}
+      TELEGRAM_PERSON_ID: ${TELEGRAM_PERSON_ID}
+      ADMIN_TELEGRAM_PERSON_ID: ${ADMIN_TELEGRAM_PERSON_ID}
+      CHAT_GPT_TOKEN: ${CHAT_GPT_TOKEN}
+
+
+
+
TELEGRAM_BOT_TOKEN=
+TELEGRAM_BOT_USERNAME=
+TELEGRAM_PERSON_ID=
+ADMIN_TELEGRAM_PERSON_ID=
+CHAT_GPT_TOKEN=
+
+
+
+
+

❤ Support Develop⚓︎

+

Sponsorship makes a project sustainable because it pays for the time of the maintainers of that project, a very scarce resource that is spent on developing new features, fixing bugs, improving stability, solving problems, and general support. The biggest bottleneck in Open Source is time.

+
    +
  • Bank card for residents of the Russian Federation: https://www.tinkoff.ru/cf/4iU6NB3uzqx
  • +
  • Crypto:
      +
    • TON: struchkov-mark.ton
    • +
    • BTC (Taproot): bc1pt49vnp43c4mktk6309zlq3020dzd0p89gc8d90zzn4sgjvck56xs0t86vy
    • +
    • ETH: 0x7668C802Bd71Be965671D4Bbb1AD90C7f7f32921
        +
      • USDT (ERC-20): 0x7668C802Bd71Be965671D4Bbb1AD90C7f7f32921
      • +
      • DAI (ERC-20): 0x7668C802Bd71Be965671D4Bbb1AD90C7f7f32921
      • +
      +
    • +
    • BNB: 0xDa41aC95f606850f2E01ba775e521Cd385AA7D03
        +
      • USD: 0xDa41aC95f606850f2E01ba775e521Cd385AA7D03
      • +
      • DAI: 0xDa41aC95f606850f2E01ba775e521Cd385AA7D03
      • +
      +
    • +
    +
  • +
+

FAQ⚓︎

+
+What model is used? +

For now the gpt-3.5-turbo model is used. In future versions you will be able to choose the model.

+
+
+What happens if my reply is longer than the allowed number of characters in one Telegram message? +

That's okay, the answer will be broken up into several posts.

+
+

Other Questions⚓︎

+

If you don't understand something, you can ask a question here 👇 or in a discussion on GitHub.

+ + + + + + + + + + + + + +

Comments

+
+ + + + +
+
+ + + +
+ +
+ +
+ + + + +
+ +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/chatgpt-telegram-bot/en/v.0.1.0/inline-setting.mp4 b/chatgpt-telegram-bot/en/v.0.1.0/inline-setting.mp4 new file mode 100644 index 0000000..3777c82 Binary files /dev/null and b/chatgpt-telegram-bot/en/v.0.1.0/inline-setting.mp4 differ diff --git a/chatgpt-telegram-bot/en/v.0.1.0/inline.mp4 b/chatgpt-telegram-bot/en/v.0.1.0/inline.mp4 new file mode 100644 index 0000000..1efc209 Binary files /dev/null and b/chatgpt-telegram-bot/en/v.0.1.0/inline.mp4 differ diff --git a/chatgpt-telegram-bot/en/v.0.1.0/sitemap.xml b/chatgpt-telegram-bot/en/v.0.1.0/sitemap.xml new file mode 100644 index 0000000..7c0d5fe --- /dev/null +++ b/chatgpt-telegram-bot/en/v.0.1.0/sitemap.xml @@ -0,0 +1,8 @@ + + + + https://docs.struchkov.dev/chatgpt-telegram-bot/en/v.0.1.0/ + 2023-03-28 + daily + + \ No newline at end of file diff --git a/chatgpt-telegram-bot/en/v.0.1.0/sitemap.xml.gz b/chatgpt-telegram-bot/en/v.0.1.0/sitemap.xml.gz new file mode 100644 index 0000000..642f2d4 Binary files /dev/null and b/chatgpt-telegram-bot/en/v.0.1.0/sitemap.xml.gz differ diff --git a/chatgpt-telegram-bot/en/v.0.1.0/stylesheets/extra.css b/chatgpt-telegram-bot/en/v.0.1.0/stylesheets/extra.css new file mode 100644 index 0000000..841f6aa --- /dev/null +++ b/chatgpt-telegram-bot/en/v.0.1.0/stylesheets/extra.css @@ -0,0 +1,77 @@ +.md-typeset .admonition, .md-typeset details { + font-size: 0.75rem; +} + +.md-typeset h1, .md-typeset h2 { + font-weight: 500; +} + +.md-typeset h2 { + margin-top: 4rem; +} + +.md-typeset h3 { + margin-top: 2.2rem; +} + +.md-typeset mark { + background-color: #fff3bc; + margin: -4px -4px -6px; + padding: 4px 4px 6px; +} + +@keyframes heart { + 0%, 40%, 80%, 100% { + transform: scale(1); + } + 20%, 60% { + transform: scale(1.15); + } +} +.heart { + animation: heart 1000ms infinite; +} + +@keyframes ninja-disappear { + 0% { + opacity: 1; + } + 50% { + opacity: 0.3; + } + 100% { + opacity: 1; + } +} + +.ninja-disappear { + animation: ninja-disappear 3000ms infinite; + animation-delay: 1500ms; +} + +@keyframes jingle-bell-swing { + 0% { + transform: rotate(0deg); + } + 50% { + transform: rotate(10deg); + } + 100% { + transform: rotate(0deg); + } +} + +.jingle-bell { + animation: jingle-bell-swing 2s ease-in-out infinite; + transform-origin: center; +} + + +@media(min-width: 768px) { + .frontpage-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + column-gap: 2em; + row-gap: 1em; + } +} \ No newline at end of file diff --git a/chatgpt-telegram-bot/en/versions.json b/chatgpt-telegram-bot/en/versions.json index 77e300d..77c2065 100644 --- a/chatgpt-telegram-bot/en/versions.json +++ b/chatgpt-telegram-bot/en/versions.json @@ -1 +1 @@ -[{"version": "v.0.0.1", "title": "v.0.0.1", "aliases": []}, {"version": "latest", "title": "latest", "aliases": []}, {"version": "develop", "title": "develop", "aliases": []}] \ No newline at end of file +[{"version": "v.0.1.0", "title": "v.0.1.0", "aliases": []}, {"version": "v.0.0.1", "title": "v.0.0.1", "aliases": []}, {"version": "latest", "title": "latest", "aliases": []}, {"version": "develop", "title": "develop", "aliases": []}] \ No newline at end of file