32
loading...
This website collects cookies to deliver better user experience
docker run -it --rm \
--volume /var/run/docker.sock:/var/run/docker.sock \
--volume "$(pwd)"/appwrite:/usr/src/code/appwrite:rw \
--entrypoint="install" \
appwrite/appwrite:0.11.0
docker run -it --rm ^
--volume //var/run/docker.sock:/var/run/docker.sock ^
--volume "%cd%"/appwrite:/usr/src/code/appwrite:rw ^
--entrypoint="install" ^
appwrite/appwrite:0.11.0
docker run -it --rm ,
--volume /var/run/docker.sock:/var/run/docker.sock ,
--volume ${pwd}/appwrite:/usr/src/code/appwrite:rw ,
--entrypoint="install" ,
appwrite/appwrite:0.11.0
docker: Error response from daemon: status code not OK but 500:
pip install appwrite
pip install python-telegram-bot
pip install jikanpy
pip install python-dotenv
+ import dotenv
+
+ from os import getenv
+ from telegram.ext import Updater
+ from telegram.ext import CommandHandler
+
+ token = dotenv.get_key('.env','TOKEN') or getenv('TOKEN')
+
+ updater = Updater(token=token, use_context=True)
+ dispatcher = updater.dispatcher
+
+ def start(update, context):
+ context.bot.send_message(
+ chat_id=update.effective_chat.id,
+ text="Hi there , im alive")
+
+ def main():
+ "Main Execution"
+ start_handler = CommandHandler('start', start)
+ dispatcher.add_handler(start_handler)
+ updater.start_polling()
+
+ if __name__ == '__main__':
+ main()
+
+ TOKEN=<###########:YOUR_TOKEN_HERE-KSDFJAKSDJFHKSJDHF>
import dotenv
from os import getenv
from telegram.ext import Updater
from telegram.ext import CommandHandler
+ from appwrite.client import Client
token = dotenv.get_key('.env','TOKEN') or getenv('TOKEN')
+ ENDPOINT = dotenv.get_key('.env','ENDPOINT') or getenv('ENDPOINT')
+ PROJECTID = dotenv.get_key('.env','PROJECTID') or getenv('PROJECTID')
+ APIKEY = dotenv.get_key('.env','APIKEY') or getenv('APIKEY')
updater = Updater(token=token, use_context=True)
dispatcher = updater.dispatcher
+ client = Client()
+ (client
+ .set_endpoint(F'http://{ENDPOINT}/v1') # Your API Endpoint
+ .set_project(PROJECTID) # Your project ID
+ .set_key(APIKEY) # Your secret API key
+ )
def start(update, context):
context.bot.send_message(
chat_id=update.effective_chat.id,
text="Hi there , im alive")
def main():
"Main Execution"
start_handler = CommandHandler('start', start)
dispatcher.add_handler(start_handler)
updater.start_polling()
if __name__ == '__main__':
main()
TOKEN=<###########:YOUR_TOKEN_HERE-KSDFJAKSDJFHKSJDHF>
+ ENDPOINT=localhost
+ PROJECTID=617bf##f####d
+ APIKEY=20e###a379c0f306b9637fff7fae6b0cb73ab98453300613d84fdd74fd6c3c947dda#####c9b05e7####ad3e5bc2adc5c782192d4d586f51e2a668c9de5a44d7fa6f43###bc737216e43bbd##faa949cf######fdf9779eceb1e938e4aaba4073eb8c1c0ce7a2b216a75d4f532545dc7795dd92f42d70c#####79069d783a187
TOKEN=<###########:YOUR_TOKEN_HERE-KSDFJAKSDJFHKSJDHF>
ENDPOINT=localhost
PROJECTID=617bf##f####d
APIKEY=20e###a379c0f306b9637fff7fae6b0cb73ab98453300613d84fdd74fd6c3c947dda#####c9b05e7####ad3e5bc2adc5c782192d4d586f51e2a668c9de5a44d7fa6f43###bc737216e43bbd##faa949cf######fdf9779eceb1e938e4aaba4073eb8c1c0ce7a2b216a75d4f532545dc7795dd92f42d70c#####79069d783a187
+ COLLECTIONID=617c51c613eab
TOKEN = dotenv.get_key('.env','TOKEN') or getenv('TOKEN')
ENDPOINT = dotenv.get_key('.env','ENDPOINT') or getenv('ENDPOINT')
PROJECTID = dotenv.get_key('.env','PROJECTID') or getenv('PROJECTID')
APIKEY = dotenv.get_key('.env','APIKEY') or getenv('APIKEY')
+ COLLECTIONID = dotenv.get_key('.env', 'COLLECTIONID') or getenv('COLLECTIONID')
from appwrite.client import Client
from appwrite.services.database import Database
client = Client()
(client
.set_endpoint('https://[HOSTNAME_OR_IP]/v1') # Your API Endpoint
.set_project('5df5acd0d48c2') # Your project ID
.set_key('919c2d18fb5d4...a2ae413da83346ad2') # Your secret API key
)
database = Database(client)
database.create_collection('[NAME]', [], [], [])
database.list_collections()
database.get_collection('[COLLECTION_ID]')
database.update_collection('[COLLECTION_ID]', '[NAME]')
database.delete_collection('[COLLECTION_ID]')
database.create_document('[COLLECTION_ID]', {})
database.list_documents('[COLLECTION_ID]')
database.get_document('[COLLECTION_ID]', '[DOCUMENT_ID]')
database.update_document('[COLLECTION_ID]', '[DOCUMENT_ID]', {})
database.delete_document('[COLLECTION_ID]', '[DOCUMENT_ID]')
def set_state(update, context):
"""
Updates the database state and id,
generally handles the insert and update side of things
"""
user_id = update.effective_user.id
cqd = update.callback_query.data
state = str(cqd.split('-')[1])
mal_id = int(cqd.split('-')[-1])
exists = database.list_documents(
COLLECTIONID,
filters=[f'userID={user_id}'])
if exists['sum'] == 0:
print('Data not found , create ')
# been deleted or never existed
payload = {
"userID": user_id,
"MalList": [mal_id],
"state": [state]
}
database.create_document(COLLECTIONID, payload)
context.bot.send_message(
chat_id=update.effective_chat.id,
text=f'Successfully added {mal_id} to list ')
else:
# data exists , update
print('Data exists , update ')
doc_id = exists['documents'][0]['$id']
print(exists)
if mal_id in exists['documents'][0]['MalList']:
context.bot.send_message(
chat_id=update.effective_chat.id,
text=(
f'{mal_id} is already on your list\n'
'use /update {id} to update its state\n'
))
else :
malist = list(exists['documents'][0]['MalList'])
new_state = list(exists['documents'][0]['state'])
new_state.append(str(state))
malist.append(int(mal_id))
payload = {
"userID": user_id,
"MalList": malist,
"state": new_state
}
updated = database.update_document(
COLLECTIONID,
doc_id,
payload)
context.bot.send_message(
chat_id=update.effective_chat.id,
text=f'Added {mal_id} to list. ')
payload = {
"userID": user_id,
"MalList": [mal_id],
"state": [state]
}
database.create_document(COLLECTIONID, payload)
context.bot.send_message(
chat_id=update.effective_chat.id,
text=f'Successfully added {mal_id} to list ')
payload = {
"userID": user_id,
"MalList": malist,
"state": new_state
}
updated = database.update_document(
COLLECTIONID,
doc_id,
payload)
doc_id = exists['documents'][0]['$id']
exists = database.list_documents(
COLLECTIONID,
filters=[f'userID={user_id}'])
def delete_item(update, context):
"""
deletes entry
"""
user_id = update.effective_user.id
if not len(context.args) == 1:
context.bot.send_message(
chat_id=update.effective_chat.id,
text='Usage : /delete {id} ')
else:
# id of anime in question
try:
mal_id = int(context.args[0])
# if doesnt exist ... ignore
docs = database.list_documents(
COLLECTIONID,
filters=[f'userID={user_id}'])
print(docs)
if len(docs['documents']) == 0:
context.bot.send_message(
chat_id=update.effective_chat.id,
text="Nothing in your list to delete , start adding more via /anime.",
parse_mode=ParseMode.HTML)
else:
docs = docs['documents'][0] # there should only be one doc
doc_id = docs['$id']
print(docs)
mal_ids = docs['MalList']
statuses = docs['state']
print(mal_ids)
print(statuses)
last_items = len(mal_ids) == 1 and len(statuses) == 1
correct_item = mal_id == mal_ids[0]
if last_items and correct_item:
# delete the whole document as its the last item
database.delete_document(COLLECTIONID, doc_id)
context.bot.send_message(
chat_id=update.effective_chat.id,
text=f"Removed {mal_id} From your list , List is now empty .",
parse_mode=ParseMode.HTML)
elif not correct_item:
context.bot.send_message(
chat_id=update.effective_chat.id,
text=f"{mal_id} isnt in your list ",
parse_mode=ParseMode.HTML)
else:
index = mal_ids.index(mal_id)
del mal_ids[0]
del statuses[0]
payload = {
"userID": user_id,
"MalList": mal_ids,
"state": statuses
}
database.update_document(
COLLECTIONID,
doc_id,
payload)
context.bot.send_message(
chat_id=update.effective_chat.id,
text=f'Deleted {mal_id} from list ')
except ValueError:
context.bot.send_message(
chat_id=update.effective_chat.id,
text='Usage : /delete {id} ')
if last_items and correct_item:
# delete the whole document as its the last item
database.delete_document(COLLECTIONID, doc_id)
context.bot.send_message(
chat_id=update.effective_chat.id,
text=f"Removed {mal_id} From your list , List is now empty .",
parse_mode=ParseMode.HTML)
docs = database.list_documents(
COLLECTIONID,
filters=[f'userID={user_id}'])
if len(docs['documents']) == 0:
context.bot.send_message(
chat_id=update.effective_chat.id,
text="No items in your list , start adding them via /anime.",
parse_mode=ParseMode.HTML)
else:
docs = docs['documents'][0] # there should only be one doc
print(docs)
mal_ids = docs['MalList']
statuses = docs['state']
anime_list = '<i><b> Your list : </b></i>\n\n'
i = 0
for id in mal_ids:
anime = jikan.anime(int(id))
anime_list = anime_list + f'[ <code>{anime["mal_id"]}</code> ] '
anime_list = anime_list + f'<b>{anime["title"]}</b>\n'
anime_list = anime_list + f'State : {statuses[i]}\n\n'
anime_list = anime_list + f'Status : {anime["status"]}\n'
anime_list = anime_list + f'Episodes : {anime["episodes"]}\n'
genres = [genre['name'] for genre in anime['genres']]
genre_string = ""
for genre in genres:
genre_string = genre_string + f" {genre} ,"
anime_list = anime_list + f'Genres : {genre_string[0:-1]}\n'
anime_list = anime_list + '\n'
print(anime)
i += 1
context.bot.send_message(
chat_id=update.effective_chat.id,
text=anime_list,
parse_mode=ParseMode.HTML)
docs = database.list_documents(
COLLECTIONID,
filters=[f'userID={user_id}'])
for id in mal_ids:
anime = jikan.anime(int(id))
anime_list = anime_list + f'[ <code>{anime["mal_id"]}</code> ] '
anime_list = anime_list + f'<b>{anime["title"]}</b>\n'
anime_list = anime_list + f'State : {statuses[i]}\n\n'
anime_list = anime_list + f'Status : {anime["status"]}\n'
anime_list = anime_list + f'Episodes : {anime["episodes"]}\n'
genres = [genre['name'] for genre in anime['genres']]
genre_string = ""
for genre in genres:
genre_string = genre_string + f" {genre} ,"
anime_list = anime_list + f'Genres : {genre_string[0:-1]}\n'
anime_list = anime_list + '\n'
print(anime)
i += 1
context.bot.send_message(
chat_id=update.effective_chat.id,
text=anime_list,
parse_mode=ParseMode.HTML)