|
2 | 2 |
|
3 | 3 | A [customizable](/config/template_config.toml), [multilanguage](/strings) Telegram shop bot with [Telegram Payments support](https://core.telegram.org/bots/payments)! |
4 | 4 |
|
5 | | -## Demo |
6 | | - |
7 | | -Send a message to [@greedtestbot](https://t.me/greedtestbot) on Telegram to view a demo of the bot in action! |
8 | | - |
9 | | -Use the special credit card number `4242 4242 4242 4242` to add unlimited credit to your account. |
10 | | - |
11 | | -## Screenshots |
| 5 | +\[ [**Documentation**](https://github.com/Steffo99/greed/wiki) | [Support](https://github.com/Steffo99/greed/issues/new/choose) \] |
12 | 6 |
|
13 | 7 |  |
14 | 8 |
|
15 | 9 |  |
16 | 10 |
|
17 | 11 |  |
18 | | - |
19 | | -## Installation via Docker |
20 | | - |
21 | | -This installation procedure assumes you are on a system with `docker` installed, with a supported CPU architecture. |
22 | | - |
23 | | -### Requirements |
24 | | - |
25 | | -* [Docker Engine](https://docs.docker.com/get-docker/) |
26 | | -* An Internet connection |
27 | | -* A Telegram bot token (obtainable at [@Botfather](https://t.me/Botfather)) |
28 | | -* A payment provider token (obtainable by [connecting a provider with your bot](https://t.me/Botfather)) |
29 | | - |
30 | | -### Steps |
31 | | - |
32 | | -1. Run a container using the project's Docker image: |
33 | | - ```console |
34 | | - # docker run --volume "$(pwd)/config:/etc/greed" --volume "$(pwd)/strings:/usr/src/greed/strings" --volume "$(pwd)/data:/var/lib/greed" ghcr.io/steffo99/greed |
35 | | - ``` |
36 | | - |
37 | | -2. Edit the configuration file `config.toml` that was created in the `strings` directory, adding your bot and payment tokens to it: |
38 | | - ```console |
39 | | - # nano config/config.toml |
40 | | - ``` |
41 | | - (Press **Ctrl+X** and then two times **Enter** to save and quit `nano`.) |
42 | | - |
43 | | -3. _Optional:_ customize the files in the `strings` folder for custom messages. |
44 | | - |
45 | | -4. Start the bot: |
46 | | - ```console |
47 | | - python -OO core.py |
48 | | - ``` |
49 | | - |
50 | | -5. Open Telegram, and send a `/start` command to your bot to be automatically promoted to 💼 Manager. |
51 | | - |
52 | | -6. Stop the bot by pressing **Ctrl+C**. |
53 | | - |
54 | | -### Running the bot |
55 | | - |
56 | | -After the installation, to run the bot, you'll need to: |
57 | | - |
58 | | -1. Run its Docker container from the same directory you installed it from: |
59 | | - ```console |
60 | | - # docker run --volume "$(pwd)/config:/etc/greed" --volume "$(pwd)/strings:/usr/src/greed/strings" --volume "$(pwd)/data:/var/lib/greed" ghcr.io/steffo99/greed |
61 | | - ``` |
62 | | - |
63 | | -### Keep the bot running |
64 | | - |
65 | | -If you want to keep the bot open even after you closed your terminal window, you'll need to pass the appropriate arguments to the docker command: |
66 | | - |
67 | | -1. Set the Docker container to always restart and to detach on successful start: |
68 | | - ```console |
69 | | - # docker run --detach --restart always --volume "$(pwd)/config:/etc/greed" --volume "$(pwd)/strings:/usr/src/greed/strings" --volume "$(pwd)/data:/var/lib/greed" ghcr.io/steffo99/greed |
70 | | - ``` |
71 | | - |
72 | | -### Updating |
73 | | - |
74 | | -To update the bot, run the following commands: |
75 | | - |
76 | | -1. Find the ID of the Docker container of the bot: |
77 | | - ```console |
78 | | - # docker container ls |
79 | | - CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES |
80 | | - abcdefabcdef ghcr.io/steffo99/greed "python -OO core.py" 6 seconds ago Up Less than a second relaxed_hypatia |
81 | | - ``` |
82 | | - |
83 | | -2. Stop the Docker container of the bot: |
84 | | - ```console |
85 | | - # docker container stop abcdefabcdef |
86 | | - ``` |
87 | | - |
88 | | -3. Remove the Docker container of the bot: |
89 | | - ```console |
90 | | - # docker container rm abcdefabcdef |
91 | | - ``` |
92 | | - |
93 | | -4. Pull the latest Docker image of the bot: |
94 | | - ```console |
95 | | - # docker pull ghcr.io/steffo99/greed:latest |
96 | | - ``` |
97 | | - |
98 | | -5. Restart the bot with the newly downloaded image: |
99 | | - ```console |
100 | | - # docker run --detach --restart always --volume "$(pwd)/config:/etc/greed" --volume "$(pwd)/strings:/usr/src/greed/strings" --volume "$(pwd)/data:/var/lib/greed" ghcr.io/steffo99/greed |
101 | | - ``` |
102 | | - |
103 | | -## Installation from source |
104 | | - |
105 | | -This installation procedure assumes you are on a Linux system, using `bash` and have `python3.8` installed. |
106 | | - |
107 | | -### Requirements |
108 | | - |
109 | | -* [Git](https://git-scm.com/) |
110 | | -* [Python 3.6 (or higher)](https://www.python.org/) |
111 | | -* An Internet connection |
112 | | -* A Telegram bot token (obtainable at [@Botfather](https://t.me/Botfather)) |
113 | | -* A payment provider token (obtainable by [connecting a provider with your bot](https://t.me/Botfather)) |
114 | | - |
115 | | -Consider renting a VPS to host the bot on; a cheap one should do, as greed is pretty lightweight! :) |
116 | | - |
117 | | -### Steps |
118 | | - |
119 | | -1. Download the project files by running: |
120 | | - ```console |
121 | | - git clone https://github.com/Steffo99/greed.git |
122 | | - ``` |
123 | | - |
124 | | -2. Enter the newly created folder: |
125 | | - ```console |
126 | | - cd greed |
127 | | - ``` |
128 | | - |
129 | | -3. Create a new virtualenv: |
130 | | - ```console |
131 | | - python3.8 -m venv venv |
132 | | - ``` |
133 | | - |
134 | | -4. Activate the virtualenv: |
135 | | - ```console |
136 | | - source venv/bin/activate |
137 | | - ``` |
138 | | - |
139 | | -5. Install the project requirements: |
140 | | - ```console |
141 | | - pip install -r requirements.txt |
142 | | - ``` |
143 | | - |
144 | | -6. _Optional:_ For colored console output, install [coloredlogs](https://pypi.org/project/coloredlogs/): |
145 | | - ```console |
146 | | - pip install coloredlogs |
147 | | - ``` |
148 | | - |
149 | | -7. Generate the configuration file: |
150 | | - ```console |
151 | | - python -OO core.py |
152 | | - ``` |
153 | | - |
154 | | -8. Edit the configuration file `config.toml`, adding your bot and payment tokens to it: |
155 | | - ```console |
156 | | - nano config/config.toml |
157 | | - ``` |
158 | | - (Press **Ctrl+X** and then two times **Enter** to save and quit `nano`.) |
159 | | - |
160 | | -9. _Optional:_ customize the files in the `strings` folder for custom messages. |
161 | | - |
162 | | -10. Start the bot: |
163 | | - ```console |
164 | | - python -OO core.py |
165 | | - ``` |
166 | | - |
167 | | -11. Open Telegram, and send a `/start` command to your bot to be automatically promoted to 💼 Manager. |
168 | | - |
169 | | -12. Stop the bot by pressing **Ctrl+C**. |
170 | | - |
171 | | -### Running the bot |
172 | | - |
173 | | -After the installation, to run the bot, you'll need to: |
174 | | - |
175 | | -1. Activate the virtualenv (if it's not already activated in the current console session): |
176 | | - ```bash |
177 | | - source venv/bin/activate |
178 | | - ``` |
179 | | - |
180 | | -2. Start the bot: |
181 | | - ```bash |
182 | | - python -OO core.py |
183 | | - ``` |
184 | | - |
185 | | -### Keep the bot running |
186 | | - |
187 | | -If you want to keep the bot open even after you closed your terminal window, you'll need to use some external program. |
188 | | - |
189 | | -Some of them are: |
190 | | - |
191 | | -- `screen` (easier, but doesn't restart automatically) |
192 | | -- `systemd` (recommended, but more difficult) |
193 | | - |
194 | | -#### `screen` |
195 | | - |
196 | | -1. Open a `screen` that will be running the bot with the following command: |
197 | | - ```bash |
198 | | - screen venv/bin/python -OO core.py |
199 | | - ``` |
200 | | - To safely detach the screen, press Ctrl+A and then Ctrl+D. |
201 | | - |
202 | | -#### `systemd` |
203 | | - |
204 | | -Assuming you downloaded `greed` in `/srv/greed`: |
205 | | - |
206 | | -1. Create a new user named `greed`: |
207 | | - ```bash |
208 | | - useradd greed --system |
209 | | - ``` |
210 | | - |
211 | | -2. Give ownership of the greed folder you downloaded earlier to the `greed` user: |
212 | | - ```bash |
213 | | - chown -R greed: /srv/greed |
214 | | - ``` |
215 | | - |
216 | | -3. Create a new file in `/etc/systemd/system` named `bot-greed.service` with the following contents: |
217 | | - ```ini |
218 | | - [Unit] |
219 | | - Name=bot-greed |
220 | | - Description=Greed Bot |
221 | | - Wants=network-online.target |
222 | | - After=network-online.target nss-lookup.target |
223 | | - |
224 | | - [Service] |
225 | | - Type=exec |
226 | | - User=greed |
227 | | - WorkingDirectory=/srv/greed |
228 | | - ExecStart=/srv/greed/venv/bin/python -OO /srv/greed/core.py |
229 | | - Environment=PYTHONUNBUFFERED=1 |
230 | | - |
231 | | - [Install] |
232 | | - WantedBy=multi-user.target |
233 | | - ``` |
234 | | - |
235 | | -4. Start the bot-greed service: |
236 | | - ```bash |
237 | | - systemctl start bot-greed |
238 | | - ``` |
239 | | - |
240 | | -5. If everything goes well, enable the bot-greed service, so it will automatically start on a reboot: |
241 | | - ```bash |
242 | | - systemctl enable bot-greed |
243 | | - ``` |
244 | | - |
245 | | -### Updating |
246 | | - |
247 | | -To update the bot, run the following commands: |
248 | | - |
249 | | -```bash |
250 | | -git stash |
251 | | -git pull |
252 | | -git stash pop |
253 | | -``` |
254 | | - |
255 | | -> If you're using an older version of greed, you may need to recreate the configuration, as greed won't use `config.ini` anymore and will use `config.toml` instead. |
256 | | - |
257 | | -## Usage |
258 | | - |
259 | | -All features can be accessed through the Telegram bot chat. |
260 | | - |
261 | | -As a 💼 Manager, you can add new products, check the placed orders, create new transactions and generate .csv log files. |
262 | | -You can also add additional 💼 Managers. |
263 | | - |
264 | | -Users will be able to add credit to their wallet, place orders and contact you in case they require assistance. |
265 | | - |
266 | | -## Documentation and help |
267 | | - |
268 | | -If you find a bug, have an idea for a new feature or just require help with `greed`, please [post an issue](https://github.com/Steffo99/greed/issues/new) or [open a discussion](https://github.com/Steffo99/greed/discussions/new) on GitHub, or, if GitHub is blocked in your country, send me an email at [ste.pigozzi@gmail.com](mailto:ste.pigozzi@gmail.com)! |
269 | | - |
270 | | -If you can read Italian, you can try to read the [paper](https://docs.google.com/document/d/1f4MKVr0B7RSQfWTSa_6ZO0LM4nPpky_GX_qdls3EHtQ/edit?usp=sharing) I wrote about greed for my final High School exam. |
271 | | - |
272 | | -If you are proficient in Python, you can also try reading the code. Most of the bot interactions can be found in the [`worker.py`](worker.py) file, so try to have a look there. |
273 | | - |
274 | | -## Forks |
275 | | - |
276 | | -Some people made a copy of Greed and added or changed some things to it (they made a _fork_). |
277 | | -These forks are listed below. |
278 | | - |
279 | | -> Please note that @Steffo99, the main developer of `greed`, does not endorse any of these forks. |
280 | | -> **Do not file bug reports here for bugs in a fork!** |
281 | | - |
282 | | -### Bitcoin - Blockonomics |
283 | | - |
284 | | -[DarrenWestwood](https://github.com/DarrenWestwood) is currently maintaining a [`greed`](https://github.com/DarrenWestwood/greed) fork adding **Bitcoin support** through [Blockonomics](https://www.blockonomics.co/). |
0 commit comments